WordPressの投稿には「カテゴリ」と「タグ」という2種類の分類がありますが、特定のケースでは、管理画面のメニューからタグを非表示にしたい場合があります。この記事では、簡単なコードを使って、投稿のタグを管理メニューから非表示にする方法を紹介します。
方法1:タグ機能ごと無効化する
以下は、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に追加すると、投稿のタグが管理画面のメニューに表示されなくなります。タグ自体は存在し続けますが、投稿の編集画面や投稿リストでのタグフィルタリングなどはできなくなります。
上のコードはWordPressコアが提供する
unregister_taxonomy_for_object_type()関数とほぼ同じ処理を自前で実装したものです。同じ結果を得たいだけであれば、次のように1行で書けます。function hide_tag_from_menu() {
unregister_taxonomy_for_object_type( 'post_tag', 'post' );
}
add_action( 'init', 'hide_tag_from_menu' );
方法2:機能は残したままメニューのリンクだけを消す
方法1のコードは、管理メニューだけでなく投稿へのタグ付け機能そのものを無効化します。投稿編集画面の「タグ」メタボックスも消え、REST API経由でもタグを設定できなくなります。タグ機能は残したまま、サイドバーの「投稿 > タグ」というメニューのリンクだけを消したい場合は、
remove_submenu_page()を使います。function hide_tag_submenu_link() {
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
}
add_action( 'admin_menu', 'hide_tag_submenu_link' );
この方法では、投稿編集画面のタグメタボックスはそのまま残るため、記事を書きながらタグを付けることはできますが、管理画面の「投稿」メニューを開いたときに「タグ」というサブメニュー項目だけが表示されなくなります。
タグを管理メニューから非表示にしたい場合、この簡単な方法で対応できますが、テーマやプラグインに影響を与える可能性があるため、事前にバックアップを取ることをおすすめします。
関連記事
- 管理画面のメニューから固定ページを非表示にする方法|本当に制限する方法も解説
- タグ一覧をサイトに表示する方法|get_tags・wp_tag_cloud・人気順表示
- 投稿画面でタグをチェックボックスで選択する方法|add_meta_boxesで確実に置き換える
よくある質問(FAQ)
$wp_taxonomies['post_tag']->object_typeからpostを外す(またはunregister_taxonomy_for_object_type()を使う)方法は、投稿編集画面のタグメタボックスやREST API経由の操作も含めて機能ごと無効化します。remove_submenu_page()は管理メニューのリンクだけを消すため、投稿編集画面からのタグ付けは引き続き可能です。post_tagからcategoryに変えるだけで同じ考え方が使えます。ただし投稿には必ず1つ以上のカテゴリが必要な仕様のため、完全に無効化するとデフォルトカテゴリでの投稿保存に影響が出ないか事前に確認してください。$wp_taxonomiesを書き換える方法はinitフックで実行します。組み込みのタクソノミーはinitより前に登録が完了しているため、initのタイミングであれば確実に上書きできます。remove_submenu_page()を使う方法は、管理メニューが構築された後に呼び出す必要があるためadmin_menuフックを使います。まとめ
WordPressの管理画面からタグを非表示にする方法として、タグ機能そのものを無効化する方法と、メニューのリンクだけを消す方法の2通りを紹介しました。運用したい内容に合わせて、適切な方法を選んで実装してください。

