tag.phpでカスタムポストタイプの投稿が表示されない問題の修正方法

tag.phpの問題

tag.phpとはWordPressにおいて、特定のタグについて一覧を表示するためのテンプレートファイルです。

今回は、tag.phpでカスタムポストタイプの投稿が表示されない問題の解決方法を簡単に紹介します。

前提

この記事はカスタムポストタイプの作成ツールとしてCustom Post Type UIを利用することを前提としております。

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' );

注意点

カスタムポストタイプがタグをサポートしていない場合はタグの利用ができない可能性があります。

カスタムポストタイプを定義するときには下記のようにタグをサポートするようにチェックを入れておきましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です