很抱歉混淆了标题。不知道如何更好地描述它。我想显示所有商店,首先按其类别排序,然后在其中按其位置排序。
我有自定义帖子类型“Shop”,两个自定义分类“Shop Category”,“Shop Location”。
示例我希望它如何显示:
伦敦01号鞋店02号鞋店05号鞋店06号鞋店伦敦11号鞋店12号鞋店16号鞋店鞋,电子产品,(…)-分类法#1
伦敦,东京,(…)-分类法#2
01号车间,(…)-自定义帖子类型
到目前为止,按一种分类法进行排序显示是可行的。它工作得很好,但我还需要一个级别。
<?php
$custom_terms = get_terms(\'shop_category\');
foreach ($custom_terms as $custom_term) {
wp_reset_query();
$args = array(
\'post_type\' => \'shop\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'shop_category\',
\'field\' => \'slug\',
\'terms\' => $custom_term->slug,
),
),
);
$loop = new WP_Query($args);
if($loop->have_posts()) {
echo \'<div class="box-category">\'.$custom_term->name.\'</div>\';
while($loop->have_posts()) : $loop->the_post();
echo \'<a href="\'.get_permalink().\'">\'.get_the_title().\'</a><br>\';
endwhile;
}
}
?>
提前感谢您的指导。
最合适的回答,由SO网友:Jacob Peattie 整理而成
首先获取类别列表和位置列表。然后循环遍历每个类别。在每个类别中,通过具有当前类别和当前位置的位置和查询帖子列表循环,并输出列表:
$categories = get_terms( array(
\'taxonomy\' => \'shop_category\',
) );
$locations = get_terms( array(
\'taxonomy\' => \'shop_location\',
) );
foreach ( $categories as $category ) {
echo \'<div class="box-category">\' . $category->name . \'</div>\';
foreach ( $locations as $location ) {
$shops = new WP_Query( array(
\'post_type\' => \'shop\',
\'tax_query\' => array(
array(
\'terms\' => $category->term_id,
\'taxonomy\' => \'shop_category\',
),
array(
\'terms\' => $location->term_id,
\'taxonomy\' => \'shop_location\',
),
),
) );
if( $shops->have_posts() ) {
echo \'<div class="box-location">\' . $location->name . \'</div>\';
while ( $shops->have_posts() ) : $shops->the_post();
echo \'<a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a><br>\';
endwhile;
}
wp_reset_postdata();
}
}