WordPressの投稿には「カテゴリ」と「タグ」という2種類の分類がありますが、特定のケースでは、管理画面のメニューからタグを非表示にしたい場合があります。この記事では、簡単なコードを使って、投稿のタグを管理メニューから非表示にする方法を紹介します。
使用するコード
以下は、functions.phpに追加することで、投稿のタグを管理画面から非表示にするコードです。
function hide_tag_from_menu() {
global $wp_taxonomies;
foreach ( $wp_taxonomies['post_tag']->object_type as $i => $object_type ) {
if ( $object_type == 'post' ) {
unset( $wp_taxonomies['post_tag']->object_type[$i] );
}
}
return true;
}
add_action( 'init', 'hide_tag_from_menu' );
global $wp_taxonomies
このコードはWordPressのグローバル変数である $wp_taxonomies を使用して、カスタム分類(taxonomy)にアクセスします。
foreachループ
$wp_taxonomies[‘post_tag’]->object_type の中をループして、’post’ というオブジェクトタイプを探します。このオブジェクトタイプが見つかった場合、該当のエントリを unset() で削除します。
add_action()
最後に、init アクションフックを使用して、上記の関数をWordPressに登録します。このフックによって、WordPressが初期化されるタイミングで関数が実行されます。
このコードを functions.php に追加すると、投稿のタグが管理画面のメニューに表示されなくなります。タグ自体は存在し続けますが、投稿の編集画面や投稿リストでのタグフィルタリングなどはできなくなります。
タグを管理メニューから非表示にしたい場合、この簡単な方法で対応できますが、テーマやプラグインに影響を与える可能性があるため、事前にバックアップを取ることをおすすめします。
よくある質問(FAQ)
Q. タグ一覧をナビゲーションメニュー風に横並び表示するCSSは?
A. ulにdisplay:flex、flex-wrap:wrapを設定し、liにlist-style:noneを設定します。リンクにはpadding・border-radius・背景色などでボタン風にデザインできます。
Q. 特定のタグのみをメニューに表示するには?
A. get_terms(array(‘taxonomy’ => ‘post_tag’, ‘include’ => array(タグID,…)))で特定タグのみ取得してリスト表示します。またはget_tags(array(‘slug’ => array(‘tag1’, ‘tag2’)))でスラッグ指定も可能です。
Q. タグメニューをウィジェットエリアに表示するには?
A. WordPress管理画面の外観>ウィジェットからタグクラウドウィジェットをサイドバーエリアに追加するのが最も手軽です。コードで実装するよりも管理が楽です。