我已经为自定义帖子创建了自定义分类法。现在我想显示与特定术语相关的所有帖子。假设我有两个术语term1和term2。单击term1时,将显示与term1相关的所有帖子,而不会显示与term2相关的帖子。但现在,当我单击term1时,就会一次显示与term1和term2相关的帖子。我已经编写了以下代码taxonomy.php
样板
<div class="main-content">
<?php
$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
$the_query = new WP_Query( array(
\'post_type\' => array(\'newsbox_post\'),
\'tax_query\' => array(
\'taxonomy\' => $term->taxonomy,
\'field\' => \'slug\',
\'terms\' => $term->name,
),
) );
?>
<?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>
<div class="post">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
<?php the_content(); ?>
<?php echo get_the_term_list( $post->ID, $term->taxonomy, \'People: \', \', \' ); ?>
<hr />
</div>
<?php
endwhile;
wp_reset_postdata();
else:?>
<h3><?php _e(\'404 Error: Not Found\'); ?></h3>
<?php
endif;
?>
</div>
请告诉我,我怎样才能做到这一点。
最合适的回答,由SO网友:Pieter Goosen 整理而成
不建议运行自定义查询来代替主查询。您正在尝试的操作已由主查询完成。简而言之,您正在尝试重新发明轮子:-)。
您的首要解决方案是返回默认循环,并通过pre_get_posts
. 检查this post 有关详细信息
就在代码上,您正在将术语名称传递给terms
参数,其中您应该传递术语slug,因为您已经设置了field
到slug
. 此外,您的tax_query
应该是数组的数组。将代码更改为
$the_query = new WP_Query( array(
\'post_type\' => array(\'newsbox_post\'),
\'tax_query\' => array(
array(
\'taxonomy\' => $term->taxonomy,
\'field\' => \'slug\',
\'terms\' => $term->slug,
),
),
) );