Programmatiskt sök WordPress-inlägg efter datumintervall
TL;DR: Koden som delas i det här inlägget visar hur du kan ändra frågan som körs på sidan Alla inlägg så att du kan begränsa hur du söker efter inlägg till ett angivet datumintervall.
Det har gått ett tag sedan jag senast skrev om att använda post_where
filtret för att ändra sökfrågan som körs på en given sida, till exempel området Alla inlägg i WordPress. Men med tanke på att det finns en mängd olika användningsområden för att hämta inlägg – och anpassade inläggstyper – på olika sätt, finns det en mängd olika sätt att använda detta enda filter.
Sök inlägg efter datumintervall
För att kunna söka efter inlägg efter datumintervall, här är vad som måste hända:
- Registrera en återuppringning med
posts_where
filtret, - Se till att funktionen accepterar strängen för
where
och instansen avWP_Query
den som körs på sidan - Få dagens datum och tid och datum och tid för fyra veckor sedan
- Lägg till
where
satsen för att begränsa resultaten till datumet return
den uppdaterade frågan.
Resultatet av den här funktionen är en modifierad fråga som begränsar de inlägg som returneras till det angivna datumet och tiden. Nämligen fyra veckor sedan upp till timme, minut och sekund.
Du kan ändra detta genom att uppdatera -4 weeks
strängen som skickas till strtotime
funktionen (men jag rekommenderar att du går igenom PHP-manualsidan som länkas nedan för att förstå hur den här funktionen fungerar med språk som detta).
Referenser
[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)