Сортировка записей по произвольному полю дата и время в WordPress

Сортировка записей по произвольному полю дата и время в WordPress

30 сентября 2019 WordPress

В статье Вывод записей с помощью WP_Query{} я уже показывал, как можно выводить записи по различным параметрам и как использовать простую сортировку постов. Недавно возникла задача вывода записей с доп.полем типа Дата и время и сортировка по нему. Про доп. поля в WordPress можно почитать в этой статье.

Список записей не что иное, как афиша мероприятий. Поэтому ещё одним условием было не выводить мероприятия, которые уже прошли, т.е. те, у которых дата установлена раньше текущего дня.

Собственно к записям было добавлено поле Дата и время через плагин ACF(Advanced Custom Fields). А вот код, которым получилось осуществить задуманное:

<?php 
	// задаем параметры выборки в массиве
	$args = array(
	'cat' => array(3,4), // ID рубрики
	'posts_per_page' => 8, // выводить по 8
	'meta_key' => 'date',
	'orderby' => 'meta_value_num date',
	'order' => 'ASC',
	'meta_type' => 'DATETIME',
	'meta_query' => array(
		array(
		    'key' => 'date',
		    'value' => date('Y.m.d H:i'),
		    'compare' => '>=',
		    'type' => 'DATETIME'
		)
	    ),
	);
// запрос
$query = new WP_Query( $args ); 

// далее цикл вывода постов

?>

Что здесь. Во-первых задаем ID рубрик, их здесь две, и выводим их по 8. Далее в meta_key задаем имя поля с датой, указываем сортировку по дате в orderby и ASC — по возрастанию. В meta_type указываем, что поле дата и время.

Чтобы не выводить записи до текущего дня в значении meta_queryопять же указываем key — это имя нашего поля, в value текущие дату и время и в compare знаки больше и равно. Что означает выводить только те записи, у которых дата и время больше или равны текущей дате. И в поле type указываем, что это поле дата и время.

Полный код примера:

<?php 
	// задаем параметры выборки в массиве
	$args = array(
	'cat' => array(3,4), // ID рубрики
	'posts_per_page' => 8, // выводить по 8
	'meta_key' => 'date',
	'orderby' => 'meta_value_num date',
	'order' => 'ASC',
	'meta_type' => 'DATETIME',
	'meta_query' => array(
		array(
		    'key' => 'date',
		    'value' => date('Y.m.d H:i'),
		    'compare' => '>=',
		    'type' => 'DATETIME'
		)
	    ),
	);
// запрос
$query = new WP_Query( $args ); 
?>
<?php if ( $query->have_posts() ) : ?>
  <!-- цикл -->
  <?php while ( $query->have_posts() ) : $query->the_post(); ?>
    <h1><?php the_title(); ?></h1>
  <?php endwhile; ?>
  <!-- конец цикла -->
  <?php wp_reset_postdata(); //очищаем результат запроса?>
<?php else : ?>
  <p><?php esc_html_e( 'Ничего не найдено.' ); ?></p>
<?php endif; ?>
Остались вопросы по статье? Задайте их прямо сейчас!
Похожие записи
Вывод подрубрик на странице рубрики WordPress

Пример вывода подрубрик с изображением на странице текущей рубрики WordPress. Код можно использовать и для других разделов сайта. Надо только указать ID родительской рубрики. Вывод подрубрик в текущей рубрике <?php $cat = get_query_var('cat'); // получаем ID текущей рубрики $categories = Читать далее

Произвольные поля WordPress

Произвольные поля или как их еще называют кастомные или доп. поля в WordPress очень нужная вещь, особенно при создании например сайта-каталога. С помощью доп. полей можно добавить к записям возможность указывать например цену или цвет, а затем выводить сохраненное значение Читать далее

Как создать виджет WordPress

Виджеты используются для добавления контента на страницу WordPress без изменения шаблонов тем. Боковая панель является областью по умолчанию для добавления содержимого виджетов. Также вы можете зарегистрировать собственную область виджетов и добавить в нее виджеты. WordPress содержит некоторые виджеты по умолчанию Читать далее

Оптимизация WordPress

Ваш сайт WordPress может быть медленным по многим различным причинам: забитая база данных, работающая в фоновом режиме, является одним из них. Профессиональный рабочий процесс поддержки WordPress включает в себя регулярную оптимизацию базы данных, в ходе которой вы избавляетесь от ненужных Читать далее

Отправка сообщений в Telegram из Contact Form 7

Мы уже рассматривали как отправлять сообщения в телеграмм из обычного PHP скрипта и заказы из OpenCart. В этой статье вы узнаете как отправлять сообщения в телеграмм из плагина WordPress Contact Form 7. Создаем бота Боты в Telegram создаются через другого Читать далее

Получить параметры сайта с помощью функции get_bloginfo() WordPress

Сегодня мы поговорим об одной нужной функции WordPress get_bloginfo(), которая возвращает параметры сайта и довольно часто применяется при разработке в этой CMS. Например с её помощью можно получить и вывести название, описание сайта, его адрес URL и многое другое. Синтаксис Читать далее

Добавить комментарий

*

code