概要説明
WordPress のタグは、そのままでは投稿でしか使えません。固定ページやカスタム投稿でもタグを使えるようにする functions.php のコードと、タグの一覧のページにも出すための pre_get_posts。作業環境で確かめた結果つき。
コード:固定ページとカスタム投稿でタグを使う
WordPress のタグは、そのままでは投稿でしか使えません。固定ページやカスタム投稿の編集画面には、タグの欄が出ません。
次のコードで、投稿と同じタグを固定ページとカスタム投稿(例:news)でも使えるようにします。
functions.php
/**
* 投稿のタグを、固定ページとカスタム投稿(news)でも使えるようにする
*/
add_action( 'init', function () {
register_taxonomy_for_object_type( 'post_tag', 'page' );
register_taxonomy_for_object_type( 'post_tag', 'news' ); // カスタム投稿の名前に合わせる
} );
/**
* タグの一覧のページに、固定ページとカスタム投稿の記事も出す
*/
add_action( 'pre_get_posts', function ( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_tag() ) {
$query->set( 'post_type', array( 'post', 'page', 'news' ) );
}
} );
| 書き方 | 役目 |
|---|---|
| register_taxonomy_for_object_type | 今あるタグ(post_tag)を、ほかの種類の投稿にも付けられるようにする。編集画面にタグの欄が出る |
| pre_get_posts | タグの一覧のページで、どの種類の投稿を出すかを決める |
編集画面でタグを付けられるようになっても、タグの一覧のページ(/tag/タグ名)には、そのままでは投稿しか出ません。固定ページなども出したいときは、下の pre_get_posts の部分も足します。
確かめた結果
このサイトの作業環境(WordPress 7.1)で、試しの固定ページにタグを付けて確かめました。
| 試したこと | タグの一覧のページ |
|---|---|
| register_taxonomy_for_object_type だけ | 固定ページにタグは付いたが、一覧には出なかった |
| pre_get_posts も足す | 固定ページが一覧に出た |
試しに作った固定ページとタグは、確かめたあと消しました。
投稿とは別のタグにしたいとき
ニュースのタグを、投稿のタグと混ぜたくないときは、カスタム投稿のための別のタグ(分類)を作ります。
functions.php
add_action( 'init', function () {
register_taxonomy( 'news-tag', 'news', array(
'label' => 'ニュースのタグ',
'hierarchical' => false, // false でタグ、true でカテゴリーのような形
'public' => true,
'show_in_rest' => true, // ブロックエディターの画面にも出す
) );
} );
| 投稿と同じタグを使う | 別のタグを作る | |
|---|---|---|
| タグの一覧 | 投稿・固定ページ・ニュースが同じタグでまとまる | ニュースだけのタグになる |
| 向いているところ | 話題でサイト全体をまとめたいとき | ニュースだけの分け方をしたいとき |
コードを足すと、固定ページの編集画面にも、下の画像のようにタグの欄が出ます。


