私は次の分類法でCPT「映画」を持っています:ジャンル、監督、そして俳優。
これらを登録するために使用されるコードはこれです: http://Pastebin.com/yJ9XHCDk
私は次のコードを使って動作するアーカイブムービーページをarchie-movie.phpに持っています。
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content" class="<?php echo $bw; ?>">
<?php get_template_part( 'part-genrenav'); ?>
<div id="pageHead">
<?php global $post; if(is_archive() && have_posts()) :
if ( is_post_type_archive() ) { ?>
<h1><?php post_type_archive_title(); ?></h1>
<?php } ?>
<?php endif; ?>
</div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
Taxonomy.php
Taxonomy.php(およびtaxonomy-genre.phpなど)を作成しました。 Taxonomy.phpはここで正しく 呼び出されています が、そのテンプレートのループは何も返しません。私は何十もの記事をやりとりしてきましたが、それを理解することはできません。
現在、私のtaxonomy.phpファイルはこれで構成されています。ご覧のように、上記のarchive-movie.phpファイルとそれほど違いはありません。なぜうまく行かないのか私にはわかりません。
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content">
<div id="pageHead"><h1>Taxonomy Archive</h1></div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>
映画のカスタム投稿タイプが表示されるように、その分類法のクエリをフィルタリングする必要があるかもしれません。
これをあなたのテーマのfunctions.php
ファイルに追加してみてください。
function custom_post_archive($query) {
if (!is_admin() && is_tax('genre') && $query->is_tax)
$query->set( 'post_type', array('movie', 'nav_menu_item', 'post') );
remove_action( 'pre_get_posts', 'custom_post_archive' );
}
add_action('pre_get_posts', 'custom_post_archive');
あなたはすべてのあなたの様々な分類法のためにその関数に追加する必要があるでしょうが、これはそれが最初に問題/解決策であることをテストするための良い方法です。
この記事を見てください - そしてすべてのコメントを読んでください - クエリをフィルタして条件を追加する他の方法の束について。
ループが投稿があるかどうかをチェックし、何も見つからなかったという通知を返さない場合は、ループを切り替えることから始めます。少なくともそれは問題を絞り込むのに役立ちます...そして空白のページを返さないように。
<?php get_header(); ?>
<div id="middle" class="clearfix">
<div id="inner">
<div id="content">
<div id="pageHead"><h1>Taxonomy Archive</h1></div>
<div class="posts clearfix">
<?php get_template_part( 'part-pagination'); ?>
<?php if( have_posts() ) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-movie'); ?>
<?php endwhile; ?>
<?php else: ?>
<?php _e ( "Sorry, no movies were found", "your-theme" ); ?>
<?php endif; ?>
<?php get_template_part( 'part-pagination'); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>