web-dev-qa-db-fra.com

Wordpress: essayer de recevoir les messages par tag

J'ai écrit du code qui crée automatiquement des posts et leur ajoute une balise. Je peux voir les balises dans le panneau d'administration "Tous les messages" et je peux cliquer sur le lien "Balises" des messages pour obtenir uniquement ces messages avec les balises.

Cependant, dans un plugin que j'écris en utilisant $ wp_query quels que soient les paramètres que je transmets, je récupère simplement la liste complète des publications, qu'elles aient ou non la balise que je cherche.

Voici mon code:

// Now retrieve all items matching this brand name . . .
$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

// The Loop
while ( $query->have_posts() ) : $query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Post Data
wp_reset_postdata();

Cela produit 10 résultats lorsque je ne l’ai dit que pour le résultat 5. En réalité, je ne devrais recevoir que 2 messages, car c’est le nombre total avec l’étiquette.

En regardant sur le Web, il semble que beaucoup de gens aient le même problème, mais aucune solution. J'ai dû essayer environ 10 façons différentes de spécifier le tag, mais le fait que le nombre de messages renvoyés soit erroné laisse à penser que j'ai quelque chose de complètement faux ou qu'il existe une sorte de bogue. La version Wordpress est 3.4.1 si cela peut vous aider.

Un pro de Wordpress peut-il nous éclairer?

Merci d'avance !

11
user1647208

Essaye ça

$original_query = $wp_query;
$wp_query = null;
$args=array('posts_per_page'=>5, 'tag' => $brand_name);
$wp_query = new WP_Query( $args );
if ( have_posts() ) :
    while (have_posts()) : the_post();
        echo '<li>';
        the_title();
        echo '</li>';
    endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
15
The Alpha

La réponse a été trouvée ici - https://codex.wordpress.org/Template_Tags/get_posts

L'exemple suivant montre les billets avec le tag 'jazz', sous 'taxinomie personnalisée' genre ', Utilisant' tax_query '

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'genre',
            'field' => 'slug',
            'terms' => 'jazz'
        )
    )
);
$postslist = get_posts( $args );

Donc pour vous ce sera

$args = array( 
        'posts_per_page' => 5,
        'tax_query'      => array(
            array(
                'taxonomy'  => 'post_tag',
                'field'     => 'slug',
                'terms'     => sanitize_title( $brand_name )
            )
        )
    );

$postslist = get_posts( $args );
14
BeRocket

Dans votre code, essayez:

$query=new WP_Query(array('posts_per_page=5', 'tag' => $brand_name));

au lieu de:

$query=new WP_Query(array('posts_per_page=5', array('tag' => array($brand_name))));

Pour plus de détails, voir https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parameters (Et comme mentionné dans une publication récente en double).

Remarque: $ brand_name peut être un tableau de chaînes, des valeurs séparées par des virgules, etc., et le code ci-dessus devrait fonctionner.

Sinon, essayez:

$myPosts = get_posts(array('tag' => $brand_name));

Voir https://codex.wordpress.org/Template_Tags/get_posts

0
Little Systems