web-dev-qa-db-fra.com

Comment créer une page wordpress qui affiche des publications avec des tags spécifiques?

Comme le titre l'indique, quel code utiliserais-je sur une page wordpress afin que seules les publications ayant une balise soient affichées?

2
user1114968

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' );
2
helgatheviking

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

1
Tribbey