Comment puis-je exclure une publication spécifique d'une requête WP_Query? (Par exemple, affichez toutes les publications à l'exception d'une publication portant l'ID 278)
J'ai essayé l'argument post__not_in mais il supprime simplement tous les messages ..
Je suppose que c'était lourd, mais pour répondre à votre question d'origine, j'ai collecté tous les identifiants des messages dans un tableau dans la première boucle, et exclu ces messages de la deuxième boucle en utilisant 'post__not_in' qui attend un tableau d'identifiants des messages
<?php
$args1 = array('category_name'=>'test-cat-1','order'=>'ASC');
$q1 =new WP_query($args);if($q1->have_posts()):
$firstPosts = array();while($q1->have_posts()): $q1->the_post();
$firstPosts[]= $post->ID;// add post id to array
echo '<div class="item">';
echo "<h2>". get_the_title()."</h2>";
echo "</div>";
endwhile;
endif;/****************************************************************************/// array of post id's collected in first loop, can now be used as value for the 'post__not_in' parameter in second loops query $args
$args2 = array('post__not_in'=> $firstPosts,'order'=>'ASC');
$q2 =new WP_query($args2);if($q2->have_posts()):while($q2->have_posts()): $q2->the_post();
echo '<div class="item">';
echo "<h2>". get_the_title()."</h2>";
echo "</div>";
endwhile;
endif;?>
La première boucle affiche tous les articles d'une catégorie et recueille les identifiants des articles dans un tableau.
La deuxième boucle affiche tous les messages, à l'exception des messages de la première boucle.
Vous savez, il y a des modifications pour corriger les fautes de frappe :)
kaiser
@Ziki la virgule dans le tableau n'est pas une faute de frappe, c'est une syntaxe PHP valide, si c'est ce que vous voulez dire.
leonziyo
1
@leonziyo - non, il y avait à l'origine "posts__not_in" au lieu de "post__not_in", voir l'historique de sa réponse. Coma va bien
Ziki
9
Vous devez définir l' post__not_inargument comme un tableau. Même pour une seule valeur. Et veuillez ne pas écraser les variables de base globales avec des éléments temporaires.
Le paramètre que vous recherchez est
post__not_in
(kaiser a une faute de frappe dans sa réponse). Le code pourrait donc être comme:WP_Query post__not_in documentation
la source
Vous devez définir l'
post__not_in
argument comme un tableau. Même pour une seule valeur. Et veuillez ne pas écraser les variables de base globales avec des éléments temporaires.la source
Codes alternatifs;
Exclure les messages de catégorie
Supprimer les messages de la page d'accueil
la source