Bonjour, je suis perplexe depuis quelques jours sur un moyen idéal d’afficher les messages en utilisant mon type de message personnalisé (piste) et les taxonomies (genre, sub_genre). Quand un utilisateur accède à http://sitename.com/genre/ "sub_genre name", je souhaite que tous les messages de ce sub_genre soient classés par ceux-ci. taxonomies sub_genre avec contenu. ex..
http://sitename.com/genre/hip_hop
Genre: Ouest
piste d'essai junior
Genre: Vieille école
Chanson 3 piste
Titre du rap
Morceau 2 piste
C'est le code que j'utilise mais sa boucle est fausse ...
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post();
$cam_brands = get_the_terms( $post->ID, 'sub_genre' );?>
<?php foreach( $cam_brands as $brand ) : ?>
<h3 class="genre-title"> <?php echo $brand->name; ?> </h3>
<?php $wpq = array( 'post_type' => 'track', 'taxonomy' => 'sub_genre', 'term' => $brand->slug, 'post_status' => 'publish','posts_per_page' => -1, 'caller_get_posts'=> 1 );
$brand_posts = new WP_Query ($wpq);?>
<ul>
<?php foreach( $brand_posts->posts as $post ) : ?>
<li> <?php echo $post->post_title; ?> <a class="sc-player" href="<?php echo get('soundcloud_link'); ?>">track</a> </li>
<?php endforeach ?>
</ul>
<?php endforeach ?>
<?php endwhile; ?>
<?php endif; ?>
Il semble que cela se répète autant de fois qu'il y a de posts dans la taxonomie de genre plutôt que dans sub_genre.
ex.
Genre: Ouest
piste d'essai junior
Genre: Vieille école
Chanson 3 piste
Titre du rap
Morceau 2 piste
Genre: Vieille école
Chanson 3 piste
Titre du rap
Morceau 2 piste
Genre: Vieille école
Chanson 3 piste
Titre du rap
Morceau 2 piste
Toute aide s'il vous plaît s'il vous plaît s'il vous plaît serait apprécié. Mes compétences en php ne sont pas les meilleures et la boucle me fait un peu mal au cerveau. Merci
Ce que vous faites
Votre foreach
est imbriquée dans while (have_posts()) : the_post();
. Cette boucle while, parcourt chacun de vos messages (dans le genre 'hip_hop').
Ainsi, pour chaque article du genre 'hip_hop', vous trouverez les termes de taxonomie de l'article pour la taxonomie 'sub_genre' (il s'agit du contenu de $cam_brands
). Ensuite, pour chaque terme associé (dans $cam_brands
), vous obtenez toutes les publications associées à ce terme (ou $brand
).
La dernière foreach
boucle en boucle sur chacun de ces articles et les affiche.
Ce que je pense que vous essayez de faire
Je ne suis au courant d'aucun moyen simple et naturel utilisé par WordPress pour "scinder" tous les posts d'un terme de taxonomie particulier en enfants. Mais ce qui suit va le faire (mais pas de manière particulièrement efficace).
En outre, il apparaît que "sub_genre" est une taxonomie distincte de "genre" - ai-je raison? Si vous voulez une relation parent-enfant, vous devez simplement faire de 'genre' une taxonomie hiérarchique et créer des sous-genres de la même manière que vous créez 'sous-catégories'. Une fois que vous avez fait cela, ce qui suit devrait fonctionner avec les mises en garde ci-dessous.
$term = get_queried_object();
//Get all children of this term;
$children = get_terms( 'genre',
array(
'parent'=>$term->term_id;
) ) ;
if($children):
//We have an array of child (of current genre) terms. Loop through and display the posts
foreach($children as $child):
echo '<h2>'.$child->slug.'</h2>';
// The Query - get all posts for this child-genre.
$args = array('post_type' => 'track', 'taxonomy' => 'genre', 'term' => $child->slug, 'post_status' => 'publish','posts_per_page' => -1);
$child_posts = new WP_Query ($args);
// The Loop - display all posts for this child-genre.
while ( $child_posts->have_posts() ) : $child_posts->the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
// Reset Post Data
wp_reset_postdata();
endforeach;
else:
//On genre with no children - you may want to do something else.
echo 'No sub-genre for this genre found';
endif;
Mises en garde