J'essaie d'obtenir ceci moins manuel que ce n'est actuellement. Je souhaite afficher les balises qui n'apparaissent que dans une seule catégorie. Par conséquent, si elles sont dans un article contenant deux catégories, je souhaite que cette balise soit ignorée.
Le code suivant fonctionne, mais est un peu maladroit. Idéalement, je voudrais pouvoir éviter d’ajouter les exclusions et de simplement le faire comprendre lui-même.
<?php
function pl8_artist_list($catname, $exclude) {
$custom_query = new WP_Query('posts_per_page=-1&category_name='.$catname.'&cat='.$exclude.'');
if ($custom_query->have_posts()) :
while ($custom_query->have_posts()) : $custom_query->the_post();
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
echo '<h2>' . $tag->name . '</h2>';
echo '<p>' . $tag->description . '</p>';
echo '<p><a href="http://beatexplorers.com/artist/'. $tag->slug . '">Read posts about ' . $tag->name . '</a></p>';
}
}
endwhile;
wp_reset_postdata(); // reset the query
endif;
}
?>
Et j'appelle ça comme ça:
<?php
pl8_artist_list(trance, -3,-11,-4,-8);
?>
Cela exclut les autres catégories dans lesquelles les balises peuvent apparaître.
Je suis assez nouveau en PHP, donc toute lumière qui pourrait être éclairée serait grandement appréciée.
Cette boucle commence par aller chercher tous les articles dans une catégorie donnée. passe ensuite en revue chaque balise de la publication en cours, récupère les publications pour chaque balise et, si toutes les publications ont 0 ou 1 catégorie, imprime cette catégorie. Donc, si vous avez beaucoup de tags, beaucoup de posts, cela pourrait être lent.
function wa_60126_pl8_artist_list($catname) {
//this part fetches the posts in the category provided
$custom_query = new WP_Query('posts_per_page=-1&category_name='.$catname );
if ($custom_query->have_posts()) :
while ($custom_query->have_posts()) : $custom_query->the_post();
$posttags = get_the_tags();
// build the tag list
if ($posttags) {
foreach($posttags as $posttag) {
// fetch the posts with same tags
$posts_same_tag = get_posts( array ( 'tag' => $posttag->name ) );
$is_safetag = TRUE;
// check if has only one category
foreach( $posts_same_tag as $st_post ) {
// if it has more than one category, this tag is no good
if ( count ( wp_get_post_categories($st_post->ID)) > 1 ){
$is_safetag = FALSE; break;
}
}
// end of posts and its dirty?
if($is_safetag) $safetags[] = $posttag;
}
}
endwhile;
wp_reset_postdata(); // reset the query
endif;
// now lets echo the safetags
foreach( $safetags as $tag) {
echo '<h2>' . $tag->name . '</h2>';
echo '<p>' . $tag->description . '</p>';
echo '<p><a href="http://beatexplorers.com/artist/'. $tag->slug . '">Read posts about ' . $tag->name . '</a></p>';
}
}