it-swarm.com.de

Zeige nur einen Beitrag pro WOCHE an

Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen 'NEWS', in dem ich bereits 52 Beiträge gleichzeitig veröffentlicht habe. Jetzt möchte ich sie ONE NEWS für ONE WEEK anzeigen. So decken 52 NEWS für mich ein Jahr ab.

Meine Frage, wie kann ich die Abfrage ausführen und planen, um 1 News für 1 Woche anzuzeigen? Es gibt kein verbindliches Problem, das für bestimmte NEWS für bestimmte WOCHEN gilt. Einfach als aufsteigende/absteigende Strecke für jede Woche anzeigen.

Wirklich zu schätzen, wenn jemand helfen kann, dieses Problem loszuwerden.

Danke im Voraus.

1
Mehedi Hasan

Es gibt eine ganze Reihe von Möglichkeiten, dies zu erreichen und zu optimieren, um es auch effizienter zu gestalten.

Hier ist nur eine Grundidee, um dies zu erreichen, indem Sie den Parameter offset in WP_Query und mit der PHP-Funktion date() , um die aktuelle Wochennummer zu erhalten.

  • Zunächst sollten Sie die aktuelle Wochennummer mit date( 'W' ) ermitteln. Sie können dies als Ausgangspunkt wählen, der diese Woche 15 sein wird. Sie können dies auch bei 1 beginnen, indem Sie 15 minus 1 von der aktuellen Woche abziehen. Ab dem 1. Januar müssen Sie dies anders berechnen, um den korrekten Versatz zu erhalten. Sie können damit herumspielen, um Ihre Bedürfnisse zu erfüllen

  • Berechnen Sie als Nächstes die offset. Der Versatz ist die aktuelle Woche minus 1, um sicherzustellen, dass Ihr erster Versatz 0 ist, um den ersten Beitrag zu erhalten, und 51, um den 52. Beitrag zu erhalten (letzter Beitrag).

Hier ist eine Beispielabfrage, die mit dieser Woche bei 15 beginnt. ( Dies sind nur die Grundlagen. Denken Sie daran, Ihre Abfrage mit wp_reset_postdata() zurückzusetzen.)

$args = array(
    'post_type' => 'news',
    'posts_per_page' => 1,
    'no_found_rows' => true, 
    'offset' => (date( 'W' ) - 1)
);
$q = new WP_Query( $args );
var_dump( $q->posts );

Dies sollte Ihnen einen Beitrag vom Beitragstyp news geben, der sich mit Beginn der neuen Woche einmal pro Woche ändert

1
Pieter Goosen