この記事は最後に更新してから1年以上経過しています。

「順序」を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


お勧め

parse_blocks(2024年7月24日 更新)

array[] parse_blocks( string $content )
投稿コンテンツをパースする。

single_post_title(2012年9月6日 更新)

string single_post_title( [ string $prefix = '' [ , bool $display = true ] ] )
投稿ページのタイトルを表示する。

timer_stop(2021年7月23日 更新)

string timer_stop( [ int $display = 0 [ , int $precision = 3 ] ] )
タイマー開始時からの経過時間を取得する。

is_ssl(2022年7月2日 更新)

bool is_ssl( )
リクエストがSSLかどうか調べる。

wp_title_rss(2014年4月10日 更新)

void wp_title_rss( [ string $sep = '&#187;' ] )
フィード向けのページタイトルを出力する。