WordPressで投稿一覧でタクソノミー未選択投稿のみ表示する

WordPressで投稿一覧でタクソノミー未選択投稿のみ表示する



国内最速・高安定の高性能レンタルサーバー【ConoHa WING】

WordPressではデフォルトの投稿ではカテゴリーに必ず属する必要があるので、未選択の場合は自動で「未分類」が割り当てられます。

一方、カスタム投稿では未選択も可能です。

そこで、管理画面の投稿一覧表示時に未選択の投稿のみを表示したかったのですが、機能として見当たらなかったので、個別に実装しました。

function set_main_admin_query( $query ) {
	if ( is_admin() && $query->is_main_query() ) {
		global $pagenow;
		if ( in_array( $pagenow, array( 'edit.php', 'upload.php' ) ) ) {
			$tax_query = array();
			$args      = array(
				'public' => true,
			);
			$taxonomy_lists = get_taxonomies( $args );
			foreach ( $taxonomy_lists as $name ) {
				$taxonomy_val = filter_input( INPUT_GET, $name );
				if ( isset( $taxonomy_val ) && ! $taxonomy_val ) {
					$tax_query = array(
						'relation' => 'AND',
						array(
							'taxonomy' => $name,
							'operator' => 'NOT EXISTS',
						)
					);
				}
			}
			if ( $tax_query ) {
				$query->set( 'tax_query', $tax_query );
			}
		}
	}
}
add_action( 'pre_get_posts', 'set_main_admin_query' );

【手順】

  1. 条件分岐で管理画面中のメインクエリ表示時
  2. 現在のページ状態を確認
  3. 全てのタクソノミーを取得して、GETで空の値を取得
  4. クエリに対象タクソノミー未設定取得条件を追加
  5. pre_get_postsで実行
今日はここまで

コメントを残す

メールアドレスが公開されることはありません。