Comme le titre l'indique, quel code utiliserais-je sur une page wordpress afin que seules les publications ayant une balise soient affichées?
Je suis presque sûr d'avoir toujours lu ici que new WP_Query()
est recommandé par rapport à query_posts
. De plus, vous pouvez utiliser le API transitoire pour améliorer les performances sur des requêtes supplémentaires. Placez-le dans le modèle où vous souhaitez afficher la liste:
// Get any existing copy of our transient data
if ( false === ( $my_special_tag = get_transient( 'my_special_tag' ) ) ) {
// It wasn't there, so regenerate the data and save the transient
// params for our query
$args = array(
'tag' => 'foo'
'posts_per_page' => 5,
);
// The Query
$my_special_tag = new WP_Query( $args );
// store the transient
set_transient( 'my_special_tag', $my_special_tag, 12 * HOUR_IN_SECONDS );
}
// Use the data like you would have normally...
// The Loop
if ( $my_special_tag ) :
echo '<ul class="my-special-tag">';
while ( $my_special_tag->have_posts() ) :
$my_special_tag->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
echo '</ul>';
else :
echo 'No posts found.';
endif;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
Et dans votre function.php, vous devrez effacer le transitoire lorsque les choses sont mises à jour:
// Create a function to delete our transient when a post is saved or term is edited
function delete_my_special_tag_transient( $post_id ) {
delete_transient( 'my_special_tag' );
}
add_action( 'save_post', 'delete_my_special_tag_transient' );
add_action( 'edit_term', 'delete_my_special_tag_transient' );
Avant la boucle, utilisez la fonction query_posts
query_posts( 'tag=foo' );
Cela renverra toutes les publications avec la balise attribuée.
<?php
// retrieve post with the tag of foo
query_posts( 'tag=foo' );
// the Loop
while (have_posts()) : the_post();
the_content( 'Read the full post »' );
endwhile;
?>
Vous pouvez également l'utiliser pour renvoyer des articles avec plusieurs tags.
query_posts( 'tag=foo,bike' );
Pour d'autres paramètres et références, voir http://codex.wordpress.org/Class_Reference/WP_Query#Parametershttp://codex.wordpress.org/Function_Reference/query_posts