我试图循环浏览符合我的自定义分类法的各种帖子:“行业”。帖子类型是自定义的(类型:“member”),因此我一直在尝试构建一个循环,输出当前的分类标题,然后输出分配了该类别的业务。像这样:
商业服务:A公司
施工服务:B公司
除我当前的代码外,它输出每个标题下的所有业务。我确信逻辑并不完全正确,但我正在努力找出我做错了什么,我看不出来。
我的存档成员。php代码:
$categories = get_terms(\'industries\', array(
\'hide_empty\' => 1
));
foreach($categories as $category) {
$post_array = get_posts(array(\'post_type\' => \'members\', \'industries\' => $category->name));
setup_postdata($post_array);
?>
<h1><?php echo $category->name; ?></h1>
<?php
if(have_posts()):
while(have_posts()):
the_post();
?>
<p> <?php the_title(); ?> </p>
<?php
endwhile; endif;
wp_reset_postdata();
}
最合适的回答,由SO网友:dgarceran 整理而成
我会这样做,与WP查询。正如@Milo所指出的,问题是上面的代码在每个后续迭代中都运行主WP循环,而该循环在自定义查询中没有得到响应。从WP查询创建循环将产生正确的结果。
<?php
$categories = get_terms(\'industries\', array(
\'hide_empty\' => 1
));
foreach($categories as $category) { ?>
<h1><?php echo $category->name; ?></h1>
<?php
// WP_Query arguments
$args = array(
\'post_type\' => array( \'members\' ),
\'industries\' => $category->name,
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
?>
<p> <?php the_title(); ?> </p>
<?php
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
}
?>