我正在查询分类条款,然后列出这些条款下的帖子。分类法基本上是自定义帖子类型的类别,其中的术语是类别。
我认为这不可行,但我有一个foreach循环,它应该从查询中循环遍历每个术语(类别),然后在页面上列出术语(类别),然后列出那些中的帖子它们下面的术语(类别),问题是它列出了每个类别下所有类别(术语)的帖子。所以我得到了每个帖子的倍数。这些帖子只在一个类别下添加。
我无法弄清楚为什么它重复帖子,直到我意外地尝试在类别描述甚至声明之前获取变量值,当我看到它没有获得第一类的描述值但是它做了第二个,我知道单个foreach循环一次获得多个类别的帖子。这甚至可能吗?有人能告诉我我的问题是什么,并帮我纠正这个问题?
<?php
$myterms = get_terms('menu-category', 'orderby=none&hide_empty');
foreach ($myterms as $term) : ?>
<h3><?php echo $term->name; ?></h3> <?php
$term_name = $term->slug;
$term_desc = $term->description;
if( $term_desc )
{ ?>
<div class="menu-intro"><p><?php echo $term_desc; ?></p></div>
<?php } else { ?>
<div class="menu-intro"></div>
<?php }
$args = array(
'post_type' => 'restaurant-menu',
'taxonomy' => $term_name,
);
// assigning variables to the loop
global $wp_query;
$wp_query = new WP_Query($args);
// starting loop posting only
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<ul class="dishes">
<li>
<h4 class="menu-item"><?php the_title(); ?></h4>
<p class="menu-description"><?php the_content(); ?></p>
<?php $price_value = get_field( "show_price" );
if( $price_value == "Yes")
{ ?>
<i class="price">$ <?php $price_value ?></i>
<?php } ?>
</li>
<?php endwhile;
endforeach;
?>
答案 0 :(得分:0)
我发现我的问题是我使用这个术语作为分类法,它给我带来了分类法下的所有帖子而不是类别(术语)。
这是一个快速修复,我只是希望我昨晚能够抓住它:
$args = array(
'post_type' => 'restaurant-menu',
'tax_query' => array(
array(
'taxonomy' => 'menu-category',
'field' => 'slug',
'terms' => $term_name
)
)
);