【メモ】カスタム投稿タイプも「タグアーカイブページ」に表示させる方法

カテゴリー:
コメント (0)

  1. WordPressメモ
  2. 【メモ】カスタム投稿タイプも「タグアーカイブページ」に表示させる方法

WordPress標準の「タグ」の仕様について

インストール時点において、タグのアーカイブのページでは「カスタム投稿タイプ」の記事が表示されないようになっています。プラグイン「Custom Post Type UI」などでいくら設定しようとしても、うまくいかないのですね。

実を申し上げますと、「タグアーカイブ」を表示しようという場合に、標準の「投稿」以外は表示しないよう、WordPress側で自動制御されております。

そのため、functions.php等にコードを追記する必要がございます。

functions.php等に追記するコード

function add_cpt_to_tag_archive( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_tag() ) {
        $query->set( 'post_type', array( 'post', 'your_cpt_slug' ) );
    }
}
add_action( 'pre_get_posts', 'add_cpt_to_tag_archive' );Code language: PHP (php)

コードの意味

  • add_action():WordPressであらかじめ設定されているアクションフックについて、コードを追加で適用するための関数です。
  • if ( !is_admin() && $query->is_main_query() && is_tag() ) { ... } :通常 !is_admin() (管理ページでないか)および is_tag() (タグアーカイブページかどうか)で判定できそうな気もしますが、こちらがメインクエリに手を加える処理であるため、そもそもメインクエリ処理であるかどうか確認するために $query->is_main_query()も条件に加えています。
  • array( 'post', 'your_cpt_slug')your_cpt_slug にはカスタム投稿タイプのスラッグを記載してください。
  • 複数のカスタム投稿タイプに標準のタグを設定したい場合は、例えば3行目の箇所を以下のように記載してください(コンマ記号は省略しないようにお願いします)。
    $query->set( 'post_type', array( 'post', 'cpt_slug_1' , 'cpt_slug_2', 'cpt_slug_3') );
  • pre_get_posts :メインクエリに変更を加えるのに使用するアクションフックです。

関連リンク

お気に召しましたら是非ともシェアをお願いします!

この記事を書いた人

スクリーンネーム: Y.INABA

WordPress歴は約10年ほど、色々な形で触れてきました。
HTMLやCSS、PHPに至っては20年以上も触れ続けています。
現在も日々学習中。


当記事へのコメント

コメントの際の注意

  • コメントは承認制です。当方で承認されるまでは記事内に掲載されません。
  • 記載内容に問題がなければ承認しますが、過剰な煽り・加害性等が認められる場合や著しい事実誤認等が含まれている場合は承認しません。
  • 承認後でも、問題があると判断した場合はこちらの判断により削除する可能性がございます。

コメントはこちらからどうぞ

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


PAGE TOP