在查询分类时,Foreach循环返回多个项目

时间:2014-03-05 作者:user1632018

我正在查询分类术语,然后列出这些术语下的帖子。分类法基本上是自定义帖子类型的一个类别,其中的术语是类别。

我认为这是不可能的,但我有一个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; 
     ?>

1 个回复
SO网友:user1632018

我发现我的问题是,我使用这个术语作为分类法,这使我的所有帖子都属于分类法,而不是类别(术语)。

这是一个快速解决方案,我只希望昨晚我能理解它:

$args = array(
    \'post_type\' => \'restaurant-menu\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'menu-category\',
            \'field\' => \'slug\',
            \'terms\' => $term_name
        )
    )
);

结束

相关推荐

是否可以基于meta_Query过滤器在Single.php中加载不同的侧边栏?

我有一个自定义的帖子类型“演讲者”,我有一个复选框自定义字段(meta\\u查询),用于将我的会议演讲者与我的研讨会演讲者分开。我可以用这个meta\\u查询过滤我的演讲者,一切正常。但是,如何根据会议或研讨会发言人meta\\u查询使用不同的侧栏?当我单击扬声器查看其详细信息时(无论是会议还是研讨会扬声器),详细信息页面将加载我的单个扬声器。php和在我的单个扬声器中获取侧栏的代码。php是:<?php get_sidebar(); ?> 如何指定不同的侧栏,例如get\\u侧栏(