Im пытается создать массив с сообщениями, все из которых имеют значение meta, называемое dato_start. Я пытаюсь только опубликовать сообщение, у которого есть дата ПОСЛЕ сегодняшнего дняЦитирование будущих событий только в wordpress
dato_start выходы 20161010 20:30 если сообщение установлено 10 октября 2016 года в 20:30.
Я попытался ограничить его только показом даты без времени, но я, похоже, не могу заставить его работать. прямо сейчас он просто отображает случайные сообщения. старше сегодняшнего дня, а также будущих дат.
global $post;
$test = substr(get_field('dato_start'), 0, -6);
$today = date("Ymd", strtotime('today'));
echo $today;
$args = array(
'post_type' => 'events',
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_key' => $test,
'posts_per_page' => -1,
'meta_query' => array(
array(
'value' => $today,
'compare' => '>=',
'type' => 'DATE'
)
)
);
$loop = new WP_Query($args);
ob_start();
while ($loop->have_posts()) : $loop->the_post();
$eventitems = get_post_meta($post->ID, 'dato_start', false);
foreach ($eventitems as $eventitem) :
echo 'my markup';
endforeach;
endwhile;
return ob_get_clean();
}
Может ли кто-нибудь обнаружить, где это происходит не так?
Я вижу по крайней мере пару вопросов здесь. Прежде всего, 'meta_key' должен быть именем поля, которое вы хотите заказать, если вы заказываете мета-поле. В вашем случае: 'dato_start'. Второе: в мета-запросах тип 'DATE' работает со значением 'compare' BETWEEN, только если дата хранится в формате YYYY-MM-DD и протестирована в этом формате. (см. [docs] (https://codex.wordpress.org/Class_Reference/WP_Meta_Query#Usage)). Итак ... либо вы даете свой формат 'dato_start', либо (если вам нужна информация о времени), вы лучше используете значения timestamp в своей области. Он будет работать как для фильтрации, так и для заказа. –
Да, я продолжал добавлять материал, пытаясь заставить его работать, поэтому он содержит ненужные переменные. Из-за временного давления я решил сделать оператор if в проверке foreach(), если $ test является большим числом, чем $ сегодня, в то время как запрос выполняет всю сортировку сообщений из «dato_start». Мне нужно будет провести некоторое исследование этого позже, но спасибо, что посмотрели. –
Ну, я не говорил о ненужных переменных. Я имел в виду, что '' meta_key '=> $ test' не соответствует вашему текущему значению '$ test'. Кроме того, ваш 'meta_query' не будет работать, потому что ваш формат' $ today' недействителен для сравнения meta_query (он должен быть YYYY-MM-DD) и потому, что вы пропустили ключ 'key'. См. [Примеры кода] (https://codex.wordpress.org/Class_Reference/WP_Meta_Query#Initializing_WP_Meta_Query). –