tag.phpとはWordPressにおいて、特定のタグについて一覧を表示するためのテンプレートファイルです。
今回は、tag.phpでカスタムポストタイプの投稿が表示されない問題の解決方法を簡単に紹介します。
前提
この記事はカスタムポストタイプの作成ツールとしてCustom Post Type UIを利用することを前提としております。
結論から
WordPressのデフォルトの設定では、タグアーカイブページ(tag.php)は “post” という投稿タイプの投稿のみを取得します。
なので、下記のようなカスタムポストタイプの作成プラグインなどで作成した投稿はtag.phpには表示されません。
カスタムポストタイプの投稿をtag.phpに表示したいのであればそれを明示的に指定する必要があります。
これを行うための一つの方法として pre_get_posts
アクションを使用します。
修正方法
修正方法は下記のように、functions.phpにコードを追記します。
このコードは、タグアーカイブページに対するメインクエリを修正し、”post” に加えて独自に作成した指定のポストタイプもtag.phpで取得するように調整してくれます。
PHP
function add_custom_post_type_to_query( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_tag() ) {
$query->set( 'post_type', array( 'post', 'ここにあなたのカスタムポストタイプのスラッグを入力してください') );
}
}
add_action( 'pre_get_posts', 'add_custom_post_type_to_query' );
注意点
カスタムポストタイプがタグをサポートしていない場合はタグの利用ができない可能性があります。
カスタムポストタイプを定義するときには下記のようにタグをサポートするようにチェックを入れておきましょう。