この記事は最後に更新してから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


お勧め

get_site_option(2018年5月27日 更新)

mixed get_site_option( string $option [ , mixed $default = false [ , bool $use_cache$deprecated = true ] ] )
サイトオプションの値を取得する。

bloginfo_rss(2014年4月1日 更新)

void bloginfo_rss( [ string $show = '' ] )
フィード向けのブログ情報を出力する。

wp_insert_term(2020年8月31日 更新)

mixed wp_insert_term( string $term, string $taxonomy [ , mixed $args = array() ] )
ターム(カテゴリや投稿タグ)を登録する。

get_post_type_labels(2018年12月7日 更新)

object get_post_type_labels( object|WP_Post_Type $post_type_object )
投稿タイプのラベルを取得する。

nocache_headers(2018年5月27日 更新)

void nocache_headers( )
ブラウザのキャッシュを無効にするHTTPヘッダーを出力する。