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


お勧め

wp_save_post_revision(2024年1月10日 更新)

int | WP_Error | void wp_save_post_revision( int $post_id )
現状の投稿のリビジョンを作成する。

get_the_author_posts_link(2019年8月21日 更新)

string get_the_author_posts_link( )
投稿者アーカイブページのリンクを取得する。

get_year_link(2012年2月2日 更新)

string get_year_link( mixed $year )
年アーカイブのURLを取得する。

register_taxonomy(2022年6月1日 更新)

WP_Taxonomy | WP_Error register_taxonomy( string $taxonomy, array | string $object_type, array | string $args = array() )
タクソノミーを登録する。

wp_add_object_terms(2013年8月6日 更新)

mixed wp_add_object_terms( int $object_id, mixed $terms, mixed $taxonomy )
投稿情報などにタクソノミーを追加する。