✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Программный поиск сообщений WordPress по диапазону дат

38

TL;DR: код, опубликованный в этом сообщении, показывает, как вы можете изменить запрос, который выполняется на странице «Все сообщения », чтобы вы могли ограничить поиск сообщений определенным диапазоном дат.

Прошло некоторое время с тех пор, как я в последний раз писал об использовании post_whereфильтра для изменения поискового запроса, который выполняется на данной странице, например, в области «Все сообщения» WordPress. Но, учитывая тот факт, что существует множество применений для извлечения сообщений — и настраиваемых типов сообщений — по-разному, существует множество способов использования этого единственного фильтра.

Поиск сообщений по диапазону дат

Для поиска сообщений по диапазону дат необходимо выполнить следующие действия:

  1. Зарегистрируйте обратный звонок с posts_whereфильтром,
  2. Убедитесь, что функция принимает строку whereи экземпляр WP_Query, который выполняется на странице.
  3. Получить сегодняшнюю дату и время, а также дату и время четырехнедельной давности
  4. Добавьте whereпредложение, чтобы ограничить результаты датой
  5. returnобновленный запрос.
<?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
);

Результатом этой функции является измененный запрос, который ограничивает сообщения, возвращаемые указанной датой и временем. А именно, четыре недели назад с точностью до часа, минуты и секунды.

Вы можете изменить это, обновив -4 weeksстроку, переданную strtotimeфункции (но я рекомендую просмотреть страницу руководства по PHP, указанную ниже, чтобы понять, как эта функция работает с таким языком).

использованная литература

  • [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)

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее