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


お勧め

site_url(2018年12月8日 更新)

string site_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のサイトURLを取得する。サイトURLは、管理者ページの「設定」-「一般」の「WordPressのアドレス(URL)」のこと。

cat_is_ancestor_of(2011年11月15日 更新)

bool cat_is_ancestor_of( mixed $cat1, mixed $cat2 )
カテゴリが子孫関係か調べる。

pings_open(2018年5月27日 更新)

bool pings_open( [ mixed $post_id = NULL ] )
投稿ページ(情報)がトラックバック・ピンバックを許可しているかを調べる。

get_theme_support(2018年10月19日 更新)

mixed get_theme_support( string $feature [ , mixed $args ] )
テーマ機能を取得する。

get_users(2017年11月27日 更新)

array get_users( [ array $args = array() ] )
ユーザー情報を取得する。