Hae ohjelmallisesti WordPress-viestejä ajanjakson mukaan
TL;DR: Tässä viestissä jaettu koodi näyttää, kuinka voit muokata Kaikki viestit -sivulla suoritettavaa kyselyä, jotta voit rajoittaa viestien haun tietylle ajanjaksolle.
Siitä on vähän aikaa, kun viimeksi kirjoitin suodattimen käyttämisestä tietyllä sivulla, kuten WordPressin Kaikki viestit -alueella, post_wheresuoritettavan hakukyselyn muokkaamiseen. Mutta kun otetaan huomioon, että viestien – ja mukautettujen viestityyppien – hakemiseen on useita eri tapoja, tätä yhtä suodatinta voidaan käyttää useilla eri tavoilla.
Hae viestejä ajanjakson mukaan
Jotta voit etsiä viestejä ajanjakson mukaan, seuraavaa on tapahduttava:
- Rekisteröi takaisinsoitto
posts_wheresuodattimella, - Varmista, että funktio hyväksyy merkkijonon
wherejaWP_Querysivulla käynnissä olevan esiintymän - Hanki tämän päivän päivämäärä ja kellonaika sekä neljän viikon takainen päivämäärä ja aika
- Rajaa
wheretulokset päivämäärään lisäämällä lauseke returnpäivitetty kysely.
<?php
add_filter(
'posts_where',
function (string $where, WP_Query $query ): string {
global $wpdb;
$todays_date = gmdate( 'Y-m-d H:i:s', strtotime( 'now') );
$four_weeks_ago = gmdate( 'Y-m-d H:i:s', strtotime( '-4 weeks') );
$prepend = $wpdb->prepare(
" AND {$wpdb->posts}.post_date > %s",
$four_weeks_ago
);
$prepend .= $wpdb->prepare(
" AND {$wpdb->posts}.post_date < %s",
$todays_date
);
return $prepend. $where;
}, 101, 2
);
Tämän funktion tulos on muokattu kysely, joka rajoittaa viestit, jotka palautetaan määritettyyn päivämäärään ja kellonaikaan mennessä. Nimittäin neljä viikkoa sitten tuntiin, minuuttiin ja sekuntiin asti.
Voit muuttaa tätä päivittämällä funktiolle välitetyn -4 weeksmerkkijonon strtotime(mutta suosittelen tutustumaan alla linkitettyyn PHP-käsikirjasivuun ymmärtääksesi, kuinka tämä funktio toimii tällaisen kielen kanssa).
Viitteet
[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)