web-dev-qa-db-ja.com

Tag.phpがタグ付きの投稿を表示しない

私はCPTを取得し、私のCPTの議論で私は分類法をpost_tagと呼んでいます。 tag.phpファイルを作成すると、そのタグの投稿は表示されません。私のtag.php

<?php get_header(); ?>

    <section class="row">
        <div class="col-md-7">
            <p>Tag: <?php single_tag_title(); ?></p>
            <?php if ( have_posts() ): while ( have_posts() ): the_post(); ?>
                <h1><?php the_title(); ?></h1>
            <?php endwhile;     
            else: ?>
                <p>not working</p>          
            <?php endif; ?>             
        </div>
        <?php get_sidebar(); ?>
    </section>

<?php get_footer(); ?>

私の調査では " tag.phpはカスタム投稿タイプの投稿のタグでは動作しません? "に出会いましたが、私は自分がpost_tagタグのデフォルトだと思ったものを使っています。 WP_Query()タグパラメータを参照していたときに、クリックされたタグを考慮する方法が示されていません。 tag.phpを検索すると、 Tag Templates が表示され、すべてのタグを考慮した例は表示されません。タグに関連するすべての投稿に対してWP_Query()を書くための適切な方法は何ですか? " Wordpressは関連ページ(タグベース)を取得する - wp_get_post_tags "を読んだ後に wp_get_post_tags() に出会ったが、tag.phpの書き換えを理解していないのでcodexに例はない。それでは、クリックされたタグのすべての投稿を返すようにどうすれば正しく私のtag.phpを書くことができますか?

Pieterのコメント :のおかげで私はそれを考え出した。

functions.phpに追加しました:

function tag_filter($query) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_tag) {
      $query->set('post_type', array( 'custom_post_type', ));
    }
  }
}
add_action('pre_get_posts','tag_filter');

これは私にとっては完璧に機能しました。私は他の投稿タイプも含めたいと思ったので、追加しました:

$query->set('post_type', array( 'custom_post_type', 'post', 'page' ));
0
lozov