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:メインクエリに変更を加えるのに使用するアクションフックです。
