WordPressの投稿編集画面で表示されるカテゴリー一覧は、初期状態ではID順や名前順で並んでいます。しかし、用途によっては任意の順序に並び替えたい場合もあるでしょう。この記事では、管理画面(投稿画面)でカテゴリーのチェックリストの表示順を自由に変更する方法を紹介します。
wp_terms_checklist_args フィルターを使用する
WordPressでは、投稿画面のカテゴリー一覧は wp_terms_checklist() 関数によって出力されています。この出力をカスタマイズするには、wp_terms_checklist_args フィルターフックを使うのが最も効果的です。
任意の順番で表示するカスタマイズ例
以下のコードを functions.php に追加することで、特定のカテゴリーIDの順序でチェックリストが並ぶようになります。
function custom_category_order_in_admin($args, $post_id) {
// カスタム順序にしたいカテゴリーIDの配列(任意の順番で指定)
$custom_order = array(5, 12, 8, 3, 1);
// タクソノミーがカテゴリーであることを確認
if ($args['taxonomy'] === 'category') {
$args['include'] = implode(',', $custom_order);
$args['orderby'] = 'include';
}
return $args;
}
add_filter('wp_terms_checklist_args', 'custom_category_order_in_admin', 10, 2);
ポイント:
include に並べたいIDを指定し、orderby を include にすることで、指定した順序通りに表示されます。
注意点と補足
この方法は「投稿編集画面」のカテゴリー表示順にのみ影響します。管理画面のカテゴリー一覧(edit-tags.php)の並び順は対象外です。
また、カテゴリーの親子構造がある場合は、その構造を維持したい場合に追加の工夫が必要になります。その場合は、get_terms をカスタマイズする方法も検討しましょう。
よくある質問(FAQ)
Q. カテゴリーの表示順をGUIで変更できるようにするには?
A. Category Order and Taxonomy Terms Order等のプラグインを使うのが最も手軽です。プラグインなしでは各カテゴリーにterm_metaとして順序番号を保存し、get_terms()にorderby=’meta_value_num’を指定して取得します。
Q. カテゴリー一覧のデフォルトのアルファベット順を変えるには?
A. get_categories()・get_terms()のorderbyパラメーターをnameからidやterm_orderに変更します。WordPress標準ではterm_orderというカラムはないため、プラグインかカスタム実装が必要です。
Q. 並び替えた順序でカテゴリーウィジェットを表示するには?
A. wp_list_categories()にorderby・orderパラメーターを渡します。カスタム順序を使う場合はget_terms()でカスタム順に取得してforeachで出力するカスタムウィジェットを実装します。
まとめ
管理画面でのカテゴリーの並び順を変更することで、頻繁に使うカテゴリーを上部に表示したり、投稿者にわかりやすく整理したりすることが可能になります。
カスタマイズ性の高いWordPressの機能を活用して、投稿作業の効率化を目指しましょう。

