【コピペでOK】WordPress の管理画面の投稿リストにタクソノミーのドロップダウンを表示する方法
この記事では、上記画像のように WordPress の管理画面の投稿リスト画面に、関連付けられた全てのタクソノミーのドロップダウンによる絞り込みを実装する方法について解説します。このカスタマイズは全ての投稿タイプに反映されます。
管理画面の投稿リストにカスタム分類のドロップダウンを表示する方法
実現方法は、下記コードを子テーマの function.php なり、自作プラグインのファイルなりに追記するだけです。
ちなみに、中身が一切ないタクソノミーのドロップダウンは邪魔なだけなので非表示になるようにしています。
/**
* Add Admin Taxonomy DropDown.
*
* @param string $post_type Post Type.
*/
function add_admin_taxonomy_dropdown( $post_type ) {
$admin_post_types = get_post_types();
foreach ( $admin_post_types as $admin_post_type ) {
if ( $admin_post_type === $post_type ) {
$taxonomies = get_object_taxonomies( $admin_post_type, 'object' );
foreach ( $taxonomies as $taxonomy ) {
if ( 'post_format' !== $taxonomy->name && 'category' !== $taxonomy->name ) {
if ( 'post_tag' === $taxonomy->name ) {
wp_dropdown_categories(
array(
'show_option_all' => 'タグ一覧',
'orderby' => 'name',
'hide_if_empty' => true,
'selected' => get_query_var( 'tag' ),
'name' => 'tag',
'taxonomy' => 'post_tag',
'value_field' => 'slug',
)
);
} else {
wp_dropdown_categories(
array(
'show_option_all' => $taxonomy->label . '一覧',
'orderby' => 'name',
'selected' => get_query_var( $taxonomy->name ),
'hide_if_empty' => true,
'name' => $taxonomy->name,
'taxonomy' => $taxonomy->name,
'value_field' => 'slug',
)
);
}
}
}
}
}
}
add_action( 'restrict_manage_posts', 'add_admin_taxonomy_dropdown', 10, 2 );
ポイント
今回のポイントは下記の3つです。
- どのようにして絞り込み用のドロップダウンを設置するか
- 全ての投稿タイプをいかに取得するか
- 個々の投稿タイプに関連付けられたカスタム分類をいかに取得するか
どのようにして絞り込み用のドロップダウンを設置するか
どのようにして絞り込み用のドロップダウンを設置するかですが、その件についてはすでに先駆者の方々がおられましたのでそちらを参考にしました。
カスタム分類の場合は下記を参考にしました。
[blogcard url="https://qiita.com/gatespace/items/39a030c0303f6e82d35d"]
タグについてはカスタム分類とは勝手が違ったので下記を参考にしました。
[blogcard url="https://www.nxworld.net/wordpress/wp-add-post-tag-filter.html"]
ポイントは下記のとおりです。
- restrict_manage_posts から $post_type を引っ張ってきてそれで現在の画面の投稿タイプと比べること
- ドロップダウンは wp_dropdown_categories を使って実装するということ
全ての投稿タイプをいかに取得するか
get_post_types を使用することで実現可能でした。今回は名前のみが欲しかったので引数は指定しませんでした。
個々の投稿タイプに関連付けられたカスタム分類をいかに取得するか
get_object_taxonomies を使用することで実現可能でした。
今回は タクソノミーの名前やラベルといった複数の要素が欲しかったのでオブジェクト形式で取得しています。
実装するにあたって苦戦したこと
今回は実装するにあたって下記のことに苦戦しました。
- カスタム分類とタグでドロップダウンを実装する際の勝手が違ったこと
- $post_type でを使って制限しないと余計なドロップダウンまで追加されてしまったこと
- 中身が一切ないが投稿タイプに関連付けられているタクソノミーをどうするか
最後に
今回は WordPress の管理画面の投稿リスト画面に、関連付けられた全てのタクソノミーのドロップダウンによる絞り込みを実装する方法を解説しました。ドロップダウンによる絞り込みがあるのと無いのでは使い勝手が格段に違ってくると思います。
この記事が皆さんのお役に立てれば幸いです。
投稿者プロフィール
最新の投稿
- Lightning2023年12月20日Lightning G3 Three Column Unit をアップデートした話
- Lightning2021年12月15日Lightning G3 のスキンを自作してみた話
- Lightning2021年12月10日Lightning Three Column Unit を G3 対応した話
- Lightning2020年12月18日Lightning3カラム化計画 その2 ~プラグイン編~