Désolé pour le titre déroutant. Je ne sais pas comment mieux le décrire. J'aimerais afficher tous les magasins d'abord triés par leurs catégories, puis, à l'intérieur, triés par leur emplacement.
J'ai un type de message personnalisé "Boutique", deux taxonomies personnalisées "Catégorie de magasin", "Emplacement du magasin".
Exemple d'affichage souhaité:
Chaussures, électronique, (...) - Taxonomie n ° 1
Londres, Tokyo, (...) - Taxonomie n ° 2
Shop 01, (...) - Type de message personnalisé
Vous avez réussi à montrer triés par une taxonomie jusqu'à présent. Cela fonctionne bien mais il me faut un niveau supplémentaire.
<?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;
}
}
?>
Merci d'avance pour les directions.
Commencez par obtenir une liste de catégories et une liste de lieux. Parcourez ensuite chaque catégorie. Dans chaque catégorie, parcourez la liste des emplacements et des publications de requête contenant la catégorie et l'emplacement actuels, puis générez la liste:
$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();
}
}