问题描述
我似乎无法正常工作。
该代码应按自定义分类法遍历所有类别,并在每个类别标题下显示帖子标题:
$args = array(
'post_type' => 'news','taxonomy' => 'news_category','orderby' => 'name'
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
$posts = get_posts($args);
echo '<h2>' . $category->name . '</h2>'; ?>
<ul>
<?PHP foreach($posts as $post) { ?>
<li>
<?PHP the_title(); ?>
</li>
<?PHP
} ?>
</ul>
<?PHP
}
预期结果是这个...
类别1
类别2
类别3
...但是我得到的是这样:
类别1
类别2
类别3
我该如何解决?
解决方法
我认为这是因为当您使用get_posts时,您没有指定要搜索的任何分类术语,因为您再次使用$ args var,它只包含用于获取类别的常规参数。
要按照您想要的方式进行操作,应在调用get_posts时将$ args替换为以下内容:
$postArgs = array(
'post_type' => 'news','tax_query' => array(
array(
'taxonomy' => 'news_category','field' => 'slug','terms' => $category->slug,),);
$posts = get_posts($postArgs);
有关您可以做什么的确切文档,请参见https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters。
WP_Query与get_posts相同