WordPressで管理用のタグをサイト上には表示しないように出来る?

functions.phpにフィルタを記述すれば手軽に除外可能だ

WordPressなどのブログエンジンでは、「カテゴリー」や「タグ」などで記事を分類できる。読者が記事を探しやすくするのが基本的な用途だが、管理画面にもタグによる絞り込み機能は用意されているので、サイト管理の円滑化にも役立つだろう。
しかし、宣伝用に書いた記事に管理用として「宣伝」のタグを付けたりするのは、読者の目に触れてしまうと格好悪いので気が進まない。読者に公開するページ上には表示されないようにしたいところだ。
プラグインで追加の分類方式を作成して非公開で使うという手もあるが、管理画面が煩雑になるのが難点だ。テーマファイルを編集して、タグ一覧の表示時に管理用のタグを除外するようにするといいだろう。該当箇所を見つけて書き換えるのは大変だが、「functions.php」にフィルター処理を書き加えれば、全体のタグ表示処理を一括して改造できるぞ。


001姉妹サイトの宣伝記事を管理画面上で探しやすくするために「PR」タグを付けてみたが、読者にも見られてしまうのは格好悪い……

function remove_admin_tags($tags,$tax=null,$args=null){
	if(!is_admin()){
		foreach($tags as $idx=>$tag){
			if($tag->name=='PR' || $tag->name=='test'){
				unset($tags[$idx]);
			}
		}
	}
	return($tags);
}
add_filter('get_terms','remove_admin_tags',10,3);
add_filter('get_the_terms','remove_admin_tags',10,3);

特定のタグやカテゴリを非表示にしたければ、テーマディレクトリの「functions.php」ファイルを編集し、上記のようなスクリプトを追加してアップロードしよう。
「if($tag->name=='PR' || $tag->name=='test')」の部分が非表示にしたいタグ・カテゴリ名の条件になっているぞ。
なお、WordPress内部ではタグやカテゴリ、その他の追加の分類方式は全て共通の方法で処理されているので、この例ではタグもカテゴリも一括してフィルタリングされる。
「get_terms」フィルタがサイト上の全分類、「get_the_terms」が特定の記事に付けられた分類のリストに対するフィルタとなっている。
テーマやプラグインによっては、これらのフィルタの対象にならない方法でタグなどを列挙している可能性もあるので、絶対に公開されてはならないタグを隠すときなどは、あらかじめ当たり障りの無いタグでテストするようにしよう。


002このように、記事に付けられたタグの一覧や、サイトで使われている全タグの一覧(タグクラウド)から、指定した名前のタグを非表示に出来たぞ。

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