WordPress の固定ページやカスタム投稿でタグを使う:タグの一覧のページにも出す方法

概要説明

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,  // ブロックエディターの画面にも出す
	) );
} );
投稿と同じタグを使う 別のタグを作る
タグの一覧 投稿・固定ページ・ニュースが同じタグでまとまる ニュースだけのタグになる
向いているところ 話題でサイト全体をまとめたいとき ニュースだけの分け方をしたいとき

コードを足すと、固定ページの編集画面にも、下の画像のようにタグの欄が出ます。

WordPress の固定ページやカスタム投稿でタグを使う:タグの一覧のページにも出す方法

参考(WordPress の公式の説明)

関連機能

  1. WordPress の管理バーの「投稿を表示」を別のタブで開く:admin_bar_menu で target=”_blank” を足す

  2. RSSフィードを使ってWordPress同士のコンテンツを共有

  3. WordPress のユーザーの編集画面に項目を足す:所属店舗などをプロフィールに保存して表示する

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP