我知道这是一个古老的问题,已经有了很好的答案,但我今天花了几个小时努力解决类似的问题,并想出了一个替代循环。
如果您想在分类法的归档页面上实现这一点,还可以稍微定制一下Mridul(优秀)的解决方案。换句话说,您可以使用此解决方案按其他分类法对自定义分类法存档进行排序。
我之所以分享这一点,是因为我今天花了四个小时来解决这个问题,如果其他人试图创建按不同分类法排序的自定义分类法档案,那么您就是这样做的。(另外,这是我在StackExchange上的第一个答案——请友好一些!)
这与Mridul的解决方案一模一样。查询要按其对帖子进行排序的分类法。
$terms = get_terms( array(
\'taxonomy\' => \'custom_taxonomy_one\',
\'parent\' => 0, // This helped me eliminate repetitive taxonomies; you may want to skip this
) );
foreach($terms as $term) {
echo \'<h2>\' . $term->name . \'</h2>\'; // Echo the name of the term
这与Mridul的回答有点不同。您希望查询两个分类法,并确保它们之间的关系设置为“and”,这意味着列出的帖子满足两个分类法中的条件。
在这种情况下,“custom\\u post\\u type”中的帖子必须与第一个词的slug和另一个词的名称匹配。希望代码对每个人都有意义!
$posts = get_posts(array(
\'post_type\' => \'custom_post_type\', // Get posts from custom post type
\'tax_query\' => array(
\'relation\' => \'AND\', // posts must match both taxonomies
array(
\'taxonomy\' => \'custom_taxonomy_one\',
\'field\' => \'slug\',
\'terms\' => $term->slug // match the slug for the term in the previous array
),
array(
\'taxonomy\' => \'custom_taxonomy_two\',
\'field\' => \'slug\',
\'terms\' => \'custom_taxonomy_two_term_name\'
)
),
\'numberposts\' => -1
));
foreach($posts as $post) {
// Do Yo Thang
}
}