「順序」をtextからnumberに変更してみた

説明

固定ページの編集画面の「投稿の属性」ウィジェットには、ページの並び替えに使用できる「順序」のinput要素がある。この「順序」のinput要素はtype属性が'text'となっており、編集の際にIMEが有効になってしまう場合がある。ページの編集頻度が多くなると、その都度IMEをオフにするのがやや面倒になってくる。

4.9.0で追加された'page_attributes_misc_attributes'アクション

まず「投稿の属性」ウィジェットだが、標準では「固定ページ」の編集時に表示されるが、これは「固定ページ」が「'page-attributes'」をサポートしているためであり、カスタム投稿タイプでも利用可能である。「順序(menu_order)」は各投稿情報に数値型で保存され、投稿情報を取得する際にソート対象として使用可能である。この「順序」のinput要素のtype属性はいまだに'text'なのだが、これを'number'に変更することでIMEは自動的にオフになり、数字のみを入力できるようになる(たぶん)。

この変更について適当なフィルターが用意されていないか調べてみたが、実際に「順序」のinput要素を出力している管理者ページ向けpage_attributes_meta_box関数(/wp-admin/includes/meta-boxes.php)ではそのようなフィルターを見つけることはできなかった。その代わりというわけではないが、対象のinput要素を出力した直後に'page_attributes_misc_attributes'アクションが実行されることがわかった。このアクションはバージョン4.9.0で追加されたもので、「投稿の属性」ウィジェットの改修に便利そうだ。

ソースコードはざっとこんな感じになる。

add_action( 'page_attributes_misc_attributes', 'myadmin_change_menu_order_to_number' );

function myadmin_change_menu_order_to_number( $post ) {
?>
<script type="text/javascript">
jQuery(document).ready( function () {
	jQuery( '#menu_order' ).attr( 'type', 'number' ).css( 'width', '4em' );
} );
</script>
<?php
}

jQueryで「順序」のinput要素を探し、type属性を'number'に変更。同時にtype属性を'number'にするだけでは入力ボックスが長くなってしまうため、'width'を'4em'として指定している。

さて今回の件を踏まえtracに要望を挙げてみた。適当なタイミングで変更されたらうれしいですね。


最終更新 : 2018年05月27日 10:42


お勧め

flush_rewrite_rules(2015年9月24日 更新)

void flush_rewrite_rules( [ bool $hard = true ] )
リライトルールを更新する。

shortcode_atts(2018年5月27日 更新)

array shortcode_atts( array $pairs, array $atts )
ショートコードの無効な属性値を除外する。属性が省略されている場合は、デフォルト値を設定する。

the_weekday(2012年1月16日 更新)

void the_weekday( )
投稿日の曜日を表示する。

wp_loginout(2018年5月27日 更新)

void wp_loginout( [ string $redirect = '' ] )
閲覧者がログインしているかどうかを調べ、ログインしていなければログインページのリンクを、ログイン済みならばログアウトページのリンクを表示する。

has_term(2012年1月17日 更新)

bool has_term( [ mixed $term = '' [ , string $taxonomy = '' [ , mixed $post = null ] ] ] )
投稿記事にタクソノミーが付属しているか調べる。