WordPress-Beiträge programmgesteuert nach Datumsbereich durchsuchen
TL;DR: Der in diesem Beitrag geteilte Code zeigt, wie Sie die Abfrage ändern können, die auf der Seite „ Alle Beiträge ” ausgeführt wird, sodass Sie die Suche nach Beiträgen auf einen bestimmten Datumsbereich beschränken können.
Es ist eine Weile her, seit ich das letzte Mal über die Verwendung des post_where
Filters zum Ändern der Suchanfrage geschrieben habe, die auf einer bestimmten Seite ausgeführt wird, wie z. B. dem Bereich „ Alle Beiträge ” von WordPress. Angesichts der Tatsache, dass es eine Vielzahl von Verwendungsmöglichkeiten für das Abrufen von Beiträgen – und benutzerdefinierten Beitragstypen – auf unterschiedliche Weise gibt, gibt es eine Vielzahl von Möglichkeiten, diesen einzelnen Filter zu verwenden.
Beiträge nach Datumsbereich suchen
Um Beiträge nach Datumsbereich zu suchen, muss Folgendes geschehen:
- Registrieren Sie einen Rückruf mit dem
posts_where
Filter, - Stellen Sie sicher, dass die Funktion die Zeichenfolge für akzeptiert
where
und die Instanz davonWP_Query
auf der Seite ausgeführt wird - Holen Sie sich das heutige Datum und die Uhrzeit sowie das Datum und die Uhrzeit von vor vier Wochen
- Stellen Sie die
where
Klausel voran, um die Ergebnisse auf das Datum zu beschränken return
die aktualisierte Abfrage.
Das Ergebnis dieser Funktion ist eine modifizierte Abfrage, die die Beiträge einschränkt, die auf das angegebene Datum und die angegebene Uhrzeit zurückgegeben werden. Nämlich vor vier Wochen auf die Stunde, Minute und Sekunde genau.
Sie können dies ändern, indem Sie die -4 weeks
an die strtotime
Funktion übergebene Zeichenfolge aktualisieren (ich empfehle jedoch, die unten verlinkte PHP-Handbuchseite zu lesen, um zu verstehen, wie diese Funktion mit einer solchen Sprache funktioniert).
Verweise
[posts_where](https://developer.wordpress.org/reference/hooks/posts_where/)
[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)
[wpdb](https://developer.wordpress.org/reference/classes/wpdb/)
[gmdate](https://www.php.net/manual/en/function.gmdate.php)
[strtotime](https://www.php.net/manual/en/function.strtotime.php)