it-swarm.com.de

Wenn der neueste Beitrag der Kategorie im Allgemeinen der neueste Beitrag ist, überspringen Sie den ersten Beitrag der Kategorie

derzeit arbeite ich an einem benutzerdefinierten Blog-Template und habe mich gefragt, ob es eine Möglichkeit gibt, herauszufinden, ob der neueste Beitrag einer Kategorie auch der neueste Beitrag des gesamten Blogs ist. Daher kann ich den ersten Beitrag der Kategorie überspringen.

 enter image description here 

  • (1) ist der neueste Beitrag des gesamten Blogs in Kategorie (B).
  • (2) ist der neueste Beitrag der Kategorie (A)
  • (3) ist der neueste Beitrag der Kategorie (B), außerdem ist (1)

Grundsätzlich frage ich, wie ich das machen würde: Wenn (3) = (1), überspringe (3) und zeige den 2. neuesten Beitrag in der Kategorie (in diesem Fall Kategorie (B)).


Zusätzliche Informationen zu meinem Blog speziell, während die obigen Informationen allgemeiner/universeller sind.

In meinem Blog habe ich auch eine Kategorie, die aus dem Blog ausgeschlossen und nur auf einer bestimmten Seite angezeigt wird. Wie würde ich diese Kategorie von der gesamten Lösung für die erste Frage ausschließen? Wäre es einfach genug, 'cat' => -123, zu schreiben?

1
marvinpoo

Am einfachsten ist es also, die ID des ersten Beitrags zu speichern. (1) In jeder Ihrer Kategorieschleifen können Sie die Eigenschaft post__not_in folgendermaßen verwenden:

// 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 ],
] );

Um eine Kategorie in WP_Query auszuschließen, können Sie category__not_in verwenden, der ein Array von Kategorie-IDs enthält. Es lohnt sich auf jeden Fall, den WordPress-Codex für WP_Query zu lesen.

3
jrmd

Verwenden Sie in Ihrer zweiten Abfrage einfach den Parameter "post__not_in".

$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