紛らわしいタイトルですみません。どのようにそれをよりよく説明するのかわからないすべての店舗をまず自分のカテゴリー別にソートして表示し、次にその中にその店舗別にソートして表示します。
カスタムの投稿タイプ "Shop"、2つのカスタム分類法 "Shop Category"、 "Shop Location"があります。
表示方法の例を示します。
靴、電化製品、(...) - 分類法#1
ロンドン、東京、(...) - 分類法#2
ショップ01、(...) - カスタム投稿タイプ
これまで1つの分類法でソートされて表示されていました。それはうまくいきますが、もう1つレベルが必要です。
<?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;
}
}
?>
事前に指示をありがとう。
まずカテゴリのリストと場所のリストを取得します。次に各カテゴリをループします。各カテゴリ内で、現在のカテゴリと現在の場所を持つ場所のリストとクエリ投稿をループ処理し、リストを出力します。
$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();
}
}