【コピペで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"]

ポイントは下記のとおりです。

全ての投稿タイプをいかに取得するか

get_post_types を使用することで実現可能でした。今回は名前のみが欲しかったので引数は指定しませんでした。

個々の投稿タイプに関連付けられたカスタム分類をいかに取得するか

get_object_taxonomies を使用することで実現可能でした。

今回は タクソノミーの名前やラベルといった複数の要素が欲しかったのでオブジェクト形式で取得しています。

実装するにあたって苦戦したこと

今回は実装するにあたって下記のことに苦戦しました。

  • カスタム分類とタグでドロップダウンを実装する際の勝手が違ったこと
  • $post_type でを使って制限しないと余計なドロップダウンまで追加されてしまったこと
  • 中身が一切ないが投稿タイプに関連付けられているタクソノミーをどうするか

最後に

今回は WordPress の管理画面の投稿リスト画面に、関連付けられた全てのタクソノミーのドロップダウンによる絞り込みを実装する方法を解説しました。ドロップダウンによる絞り込みがあるのと無いのでは使い勝手が格段に違ってくると思います。

この記事が皆さんのお役に立てれば幸いです。

投稿者プロフィール

DRILL LANCER
コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントは日本語で入力してください。(スパム対策)

CAPTCHA