Wordpress - 在foreach循环中的wp_query

时间:2014-06-27 09:52:48

标签: php wordpress foreach wp-query

我正在使用ACF来构建产品目录。 我需要创建一个这样的列表:

+类别名称
 -list
 -of
  - 产品
 -in
  - 即
 -category
+另一个类别名称
 -list
 -of
 -...
  - 在匹配类别中 对于所有类别。

类别名称是“product_categories”分类的术语。这些产品属于定制的邮政类型“产品”。

我已经构建了一个循环,显示带有名称和图像的所有类别的链接:

$terms = get_terms("product_categories", array('hide_empty' => false));
            if ( !empty( $terms ) && !is_wp_error( $terms ) ){
                foreach ( $terms as $term ) {
                    echo '<a href="'.get_term_link($term).'">';
                    echo '<p>'.$term->name.'</p>';
                    echo '<img src="'.get_field('image-field-name', $term).'"></a></div>';
                }
            }

工作正常 然后我重新构建它以显示我想要的东西:

$terms = get_terms("product_categories", array('hide_empty' => false));
            if ( !empty( $terms ) && !is_wp_error( $terms ) ){
                foreach ( $terms as $term ) {
                    $category= $term->name;
                    echo '<p>'.$category.':</p>';
                    product_list($category);
                    echo '<br/><br/>';
                }
            }

function product_list($category_name){
$inner_args=array(
'post_type' => 'products',
'product_categories' => $category_name
);
$my_query = null;
$my_query = new WP_Query($inner_args);
if( $my_query->have_posts() ) {
  while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <?php echo '<br/>Product: '.get_field('name_of_the_product');
    ?>
    <?php
  endwhile;
}
}

它几乎可以工作。 问题是它显示所有产品名称但仅针对第一个类别,在循环中第一个类别的所有产品都被回显之后,以下类别为空(仅类别名称,没有匹配项目)。
如何让它在所有类别中展示产品,而不仅仅是第一个?代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您是否尝试在foreach循环结束前添加wp_reset_query();

更多信息http://codex.wordpress.org/Function_Reference/wp_reset_query