web-dev-qa-db-fra.com

Si le message le plus récent de la catégorie est le message le plus récent en général, ignorez le premier message de la catégorie.

je travaille actuellement sur un modèle de blog personnalisé et je me demandais s’il serait possible de savoir si le dernier message d’une catégorie est également le dernier article de l’ensemble du blog, afin que je puisse sauter le premier message de la catégorie.

 enter image description here 

  • (1) est le dernier post de l’ensemble du blog, qui est dans la catégorie (B).
  • (2) est le dernier post de la catégorie (A)
  • (3) est le nouveau post de la catégorie (B), également 1

En gros, je demande comment je ferais ceci: Si (3) = (1), ignorez (3) et affichez le deuxième message le plus récent de la catégorie (dans ce cas, la catégorie (B)).


Des informations supplémentaires sur mon blog en particulier, tandis que les informations ci-dessus sont plus générales/universelles.

Dans mon blog, j'ai également une catégorie qui est exclue du blog et affichée uniquement sur une page spécifique. Comment pourrais-je exclure cette catégorie de la solution complète pour la question initiale? Serait-ce simplement suffisant pour écrire 'cat' => -123,?

1
marvinpoo

Donc, le moyen le plus simple de le faire serait de stocker l'ID du premier post (1), puis dans chacune de vos boucles de catégorie, vous pouvez utiliser la propriété post__not_in comme suit:

// inside the first loop at the top.
$latest_post_id = get_the_ID();

// WP_Query for fetching each category
$category_query = new WP_Query( [
  // other parameters
  'post__not_in' => [ $latest_post_id ],
] );

Maintenant, pour exclure une catégorie dans WP_Query, vous pouvez utiliser category__not_in qui prend un tableau d'identifiants de catégorie. Il vaut vraiment la peine de consulter le codex wordpress pour WP_Query

3
jrmd

Utilisez simplement le paramètre "post__not_in" dans votre seconde requête.

$query1 = new WP_Query...
$used_posts = array();

while ( $query1->have_posts() ) :
    $query1->the_post();
    $used_posts[]= get_the_ID();
    ...
endwhile;

$query2 = new WP_Query( array(
    'post__not_in' => $used_posts,
...
) );
1
Krzysiek Dróżdż