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

时间:2014-03-05 14:23:08

标签: php wordpress loops wordpress-plugin wordpress-theming

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

我认为这不可行,但我有一个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 个答案:

答案 0 :(得分:0)

我发现我的问题是我使用这个术语作为分类法,它给我带来了分类法下的所有帖子而不是类别(术语)。

这是一个快速修复,我只是希望我昨晚能够抓住它:

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