Попытка исключить записи по дате при сортировке по пользовательскому полю
У меня есть пользовательский тип записи "performance". У меня есть запрос, который сортирует записи по значению пользовательского поля (order-date). Теперь я хочу исключить записи, у которых дата order-date уже прошла. Я предполагал, что могу использовать то же значение "order-date" для сравнения с текущей датой, чтобы определить, нужно ли показывать запись, но не могу найти рабочий пример с сохранением сортировки. Все, что я пробовал, ломает порядок сортировки.
Этот вариант работает!
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$today = date('Y-m-d');
query_posts(array(
'post_type' => 'performance',
'posts_per_page' => 5,
'caller_get_posts' => 5,
'paged' => $paged,
'meta_key' => 'order-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'order-date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'CHAR'
)
)
));
if (have_posts()) :
while (have_posts()) : the_post();
?>
Обратите внимание, что я определил "$today" и добавил его в meta_array для сравнения с meta-value. Записи с прошедшей датой исчезли из списка, и все выглядит так, как должно. Спасибо Brady за помощь в поиске правильного решения.

Вам необходимо использовать meta_query
http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts(array(
'post_type' => 'performance', // Тип записи
'posts_per_page' => 5, // Количество записей на страницу
'caller_get_posts' => 5,
'paged' => $paged, // Номер текущей страницы
'meta_key' => 'order-date', // Мета-ключ для сортировки
'orderby' => 'meta_value', // Сортировка по значению мета-поля
'order' => 'ASC', // Порядок сортировки (по возрастанию)
'meta_query' => array( // Массив параметров для запроса мета-полей
array(
'key' => 'order-date', // Ключ мета-поля
'value' => $value, // Значение для сравнения
'compare' => '>=', // Оператор сравнения (больше или равно)
'type' => 'CHAR' // Тип значения
)
)
));
if (have_posts()) :
while (have_posts()) : the_post();
?>

Брейди - Спасибо, но я не уверен, как это реализовать. У меня возникает ошибка.

Вот код, который я реализовал: <?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'performance', 'meta_query' => array( array( 'key' => 'order-date', 'value' => $value, 'compare' => '>=' ), array( 'posts_per_page' => 5, 'caller_get_posts' => 5, 'paged' => $paged, 'meta_key' => 'order-date', 'orderby' => 'meta_value', 'order' => 'ASC' ), ) ); $query = new WP_Query( $args ); if (have_posts()) : while (have_posts()) : the_post(); ?>

во-первых, какую ошибку вы получаете. во-вторых, обновите ваш вопрос кодом, который вы пытаетесь использовать. в-третьих, как вы храните вашу дату, в каком формате?

<?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'meta_query' => array( array( 'key' => 'order-date', 'value' => $value, 'compare' => '>=' ), array( 'post_type' => 'performance', 'posts_per_page' => 5, 'caller_get_posts' => 5, 'paged' => $paged, 'meta_key' => 'order-date', 'orderby' => 'meta_value', 'order' => 'ASC' ) ) ); $query = new WP_Query( $args ); if (have_posts()) : while (have_posts()) : the_post(); ?>

Код приведен выше. Не получается правильно отобразить его в поле комментария (используя 4 пробела). Значение произвольного поля в формате Y-m-d. Вместо сообщения об ошибке просто отображаются записи блога вместо пользовательских записей.

Не публикуйте код в поле для комментариев, он не будет работать. Вместо этого отредактируйте ваш оригинальный вопрос и поместите его там. Во-вторых, код, который я вам дал, нужно было добавить к тому, что у вас уже есть, а не заменять им. В-третьих, поскольку вы используете формат Y-m-d, вам нужно будет установить тип запроса как CHAR, а не DATE, как я изначально указал.

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