我正在使用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;
}
}
它几乎可以工作。 问题是它显示所有产品名称但仅针对第一个类别,在循环中第一个类别的所有产品都被回显之后,以下类别为空(仅类别名称,没有匹配项目)。
如何让它在所有类别中展示产品,而不仅仅是第一个?代码有什么问题?
答案 0 :(得分:1)
您是否尝试在foreach循环结束前添加wp_reset_query();
?
更多信息http://codex.wordpress.org/Function_Reference/wp_reset_query