WordPressの管理画面でタグが付いていない記事だけを一覧表示する方法って無いの?

クエリを上書きするフィルタをfunctions.phpに記述すれば無理矢理実現可能だ。

ブログに記事を書くときは、目当ての記事を探しやすいように「カテゴリー」や「タグ」で分類しておきたいが、細か過ぎたり大雑把すぎたりしない丁度いい分類をするのはなかなか難しく、あとでまとめて整理しようと思ってタグ無しのまま公開してしまうことも多い。
だが、多数の既存記事の中からタグの付いていない記事を探して分類していく作業は非常に大変だ。特定のタグが付けられた記事を探すのは簡単だが、タグが一つも付けられていない記事を検索する機能は用意されていないことが多い。
定番ブログエンジンの「WordPress」も、標準ではタグ無しの記事一覧表示機能は用意されていないが、「functions.php」に数行のスクリプトを記述すれば作成できるので、ぜひ試してみよう。

function query_untagged_posts($query){
	if(is_admin()&&$query->is_main_query()&&$_GET['untagged']==1){
		$a=array();
		foreach(get_tags() as $t){
			$a[]=$t->term_id;
		}
		$query->set('tag__not_in',$a);
	}
	return($query);
}
add_filter('pre_get_posts','query_untagged_posts');

function untagged_menu(){
	global $submenu;
	$submenu['edit.php'][30]=array('タグ無し','edit_posts','edit.php?untagged=1');
}
function untagged_init(){
	add_action('admin_menu','untagged_menu');
}
add_action('init', 'untagged_init');

タグ無し記事を素早く探したければ、テーマディレクトリにある「functions.php」に上記のスクリプトを記述しよう。
最初の関数では、記事を列挙するクエリを上書きして、URLのパラメータに「untagged=1」がある場合にタグ無し記事のみを列挙するための条件を追加している。
タグ無しという検索条件は存在しないが、指定のタグが付けられていない記事を検索する「tag__not_in」条件に全てのタグのIDを列挙することで実現しているぞ。
次の2つの関数では、管理画面の「投稿」メニューに「タグ無し」の項目を追加して素早くアクセス出来るようにしている。


001

このように、管理画面上でタグが付いていない記事を一覧表示することが出来た。
キーワードによる記事検索なども、結果ページのURLに「&untagged=1」を追加すれば、タグ無しの記事のみを絞り込み表示できるぞ。


002

タグを付けるだけなら、各項目の「クイック編集」を使うといいだろう。一覧上でタイトルやタグなどの編集を行えるぞ。

2016年06月01日 12時56分
©教えて君.net All Rights Reserved.