Wie kann ich einen bestimmten Beitrag von einer WP_Query-Abfrage ausschließen? (Zeigen Sie zum Beispiel alle Posts mit Ausnahme eines Posts mit der ID 278 an.)
Ich habe das Argument post__not_in ausprobiert, aber es entfernt nur alle Posts.
Ich nehme an, das war schwer, aber um Ihre ursprüngliche Frage zu beantworten, habe ich alle Posts-IDs in einem Array in der ersten Schleife gesammelt und diese Posts mit 'post__not_in' aus der zweiten Schleife ausgeschlossen, was ein Array von Posts -IDs erwartet
<?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;?>
Die erste Schleife zeigt alle Beiträge in einer Kategorie an und sammelt die Beitrags-IDs in einem Array.
Die zweite Schleife zeigt alle Beiträge an, ausgenommen Beiträge aus der ersten Schleife.
Sie wissen, es gibt Edit s für die Korrektur von Tippfehlern :)
Kaiser
@Ziki Das Komma im Array ist kein Tippfehler. Es ist eine gültige PHP-Syntax.
Leonziyo
1
@leonziyo - nein, er hatte ursprünglich dort "posts__not_in" anstelle von "post__not_in", siehe Verlauf seiner Antwort. Koma ist in Ordnung
Ziki
9
Sie müssen das post__not_inArgument als Array definieren. Auch für einen einzelnen Wert. Und bitte überschreiben Sie globale Kernvariablen nicht mit temporären Elementen.
Der Parameter, den Sie suchen, ist
post__not_in
(Kaiser hat einen Tippfehler in seiner Antwort). Der Code könnte also so aussehen:WP_Query post__not_in documentation
quelle
Sie müssen das
post__not_in
Argument als Array definieren. Auch für einen einzelnen Wert. Und bitte überschreiben Sie globale Kernvariablen nicht mit temporären Elementen.quelle
Alternative Codes;
Kategorieeinträge ausschließen
Beiträge von der Homepage entfernen
quelle