我有一个名为“分类法教师”的自定义分类法归档页面。php“在这里,我显示教师元(标题和描述),然后循环浏览所有教师的对话(音频文件),其中有自定义的post类型‘audiotalk’。”“教师”是“音频谈话”的非继承分类法。一切都很好。
“audiotalk还拥有一个名为“audiotalk类别”的继承人自定义分类法,因此人们可以在网站的其他地方搜索它们。但在这一页上,我不需要这些类别。
问题是:我在这个模板的底部包含了一个显示“相关书籍”的文件。在include中,它有自己的循环,首先查询分类法以确定要显示什么。我想让它显示与“教师”分类法相关的书籍,但实际上它显示的是与“音频对话类别”相关的书籍。所以我一直在尝试用我能在网上找到的每一种方法重置audiotalk循环,但什么都不起作用。
这是我的代码(它有我的一次尝试):
<div class="main-col">
<div class="teacher-header clearfix">
<h1>Teacher : <?php single_cat_title(); ?></h1>
<?php echo tag_description(); ?>
</div>
<h3><?php single_cat_title(); ?>\'s Bodhi Talks:</h3>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if( get_field(\'in_sub\') == \'yes\' ) : ?>
<div class="list-item">
<a href="<?php the_permalink(); ?>" class="list-link"><?php the_title(); ?></a>
<div class="desc">
<?php if( get_field(\'talk_description\') ) : ?>
<p><?php the_field(\'talk_description\'); ?></p>
</div>
<div class="meta">
<?php endif; ?>
<a href="<?php the_permalink(); ?>" class="listen-link">Listen Now »</a>
</div>
</div>
<?php endif; endwhile; endif; wp_reset_query(); ?>
<?php get_template_part(\'template-related-products\'); ?>
</div>
我还尝试了wp\\u reset\\u postdata(),并尝试将wp\\u reset\\u postdata()和wp\\u reset\\u query()放在ifs和whiles中的不同位置。
以下是模板相关产品的代码。php。它在包括它在内的所有其他地方都能完美工作,但我意识到故障也可能在这里:
<?php // Suggested Books
if ( is_post_type_archive( \'teacher\' ) ) :
$top_taxonomy = \'teacher\';
else :
$top_taxonomy = \'audiotalk-category\';
endif;
$terms_list = wp_get_post_terms( $post->ID, $top_taxonomy, array( \'fields\' => \'all\' ) );
foreach ($terms_list as $term) :
$term_id = $term->term_id;
$taxonomy = $term->taxonomy;
$tax_query[] = array (
\'taxonomy\' => $taxonomy,
\'field\' => \'term_id\',
\'terms\' => $term_id,
);
endforeach;
$tax_query[\'relation\'] = \'OR\';
if ( is_post_type_archive( \'teacher\' ) ) :
$args = array(
\'post_type\' => \'related_product\',
\'posts_per_page\' => 3,
\'orderby\' => \'rand\',
\'meta_query\' => array(
array(
\'key\' => \'related_product_type\',
\'compare\' => \'==\',
\'value\' => \'book\'
),
array(
\'key\' => \'associated_audio_talk_teacher\',
\'compare\' => \'LIKE\',
\'value\' => $term_id
)
)
);
else :
$args = array (
\'post_type\' => \'related_product\',
\'posts_per_page\' => 3,
\'orderby\' => \'rand\',
\'order\' => \'ASC\',
\'meta_query\' => array (
array (
\'key\' => \'related_product_type\',
\'compare\' => \'=\',
\'value\' => \'book\'
)
),
\'tax_query\' => $tax_query,
);
endif;
$rp_query = new WP_Query( $args );
?>
<?php if( $rp_query->have_posts() ): ?>
<h3>Suggested Reading</h3>
<ul class="related-products">
<?php while( $rp_query->have_posts() ) : $rp_query->the_post(); ?>
<li class="book-item">
<div class="prod-img">
<a href="<?php echo get_field(\'related_product_store_link\'); ?>"><img src="<?php echo get_field(\'related_product_image\'); ?>" alt="<?php echo get_field(\'related_product_title\'); ?>"></a>
</div>
<div class="item-deets">
<h3><a href="<?php echo get_field(\'related_product_store_link\'); ?>"><?php echo get_field(\'related_product_title\'); ?></a></h3>
<span class="author"><?php echo get_field(\'related_book_author\'); ?></span>
</div>
</li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>
如果我回显$top\\u分类法,它总是显示“audiotalk category”,如果我打印\\r($terms\\u list),它会显示该audio talk的分类法,而不是模板的原始分类法。任何帮助都将不胜感激。