¿Cómo puedo excluir una publicación específica de una consulta WP_Query? (Por ejemplo, muestre todas las publicaciones aparte de una publicación con el ID 278)
He probado el argumento post__not_in pero simplemente elimina todas las publicaciones.
Supongo que esto fue pesado, pero para responder a su pregunta original, he recopilado todos los ID de las publicaciones en una matriz en el primer bucle, y excluí esas publicaciones del segundo bucle usando 'post__not_in' que espera una matriz de ID de publicaciones
<?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;?>
El primer bucle muestra todas las publicaciones de una categoría y recopila los ID de las publicaciones en una matriz.
El segundo bucle muestra todas las publicaciones, excluyendo las publicaciones del primer bucle.
Ya sabes, hay ediciones para corregir errores tipográficos :)
kaiser
@Ziki la coma en la matriz no es un error tipográfico, es una sintaxis PHP válida, si eso es lo que quieres decir.
leonziyo
1
@leonziyo - no, originalmente tenía "posts__not_in" en lugar de "post__not_in", vea el historial de su respuesta. Coma está bien
Ziki
9
Tienes que definir el post__not_inargumento como matriz. Incluso por un solo valor. Y no sobrescriba las variables centrales globales con cosas temporales.
El parámetro que está buscando es
post__not_in
(kaiser tiene un error tipográfico en su respuesta). Entonces el código podría ser como:WP_Query post__not_in documentación
fuente
Tienes que definir el
post__not_in
argumento como matriz. Incluso por un solo valor. Y no sobrescriba las variables centrales globales con cosas temporales.fuente
Códigos alternativos;
Excluir publicaciones de categoría
Eliminar publicaciones de la página de inicio
fuente