2016-05-24 2 views
0

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(); 
} 

Может ли кто-нибудь обнаружить, где это происходит не так?

+0

Я вижу по крайней мере пару вопросов здесь. Прежде всего, 'meta_key' должен быть именем поля, которое вы хотите заказать, если вы заказываете мета-поле. В вашем случае: 'dato_start'. Второе: в мета-запросах тип 'DATE' работает со значением 'compare' BETWEEN, только если дата хранится в формате YYYY-MM-DD и протестирована в этом формате. (см. [docs] (https://codex.wordpress.org/Class_Reference/WP_Meta_Query#Usage)). Итак ... либо вы даете свой формат 'dato_start', либо (если вам нужна информация о времени), вы лучше используете значения timestamp в своей области. Он будет работать как для фильтрации, так и для заказа. –

+0

Да, я продолжал добавлять материал, пытаясь заставить его работать, поэтому он содержит ненужные переменные. Из-за временного давления я решил сделать оператор if в проверке foreach(), если $ test является большим числом, чем $ сегодня, в то время как запрос выполняет всю сортировку сообщений из «dato_start». Мне нужно будет провести некоторое исследование этого позже, но спасибо, что посмотрели. –

+0

Ну, я не говорил о ненужных переменных. Я имел в виду, что '' 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). –

ответ

0

Думая о крайних сроках, я решил просто сделать мои $ args петлями через все сообщения о событиях, сортируя по dato_start. Затем я сделал проверку if, если $ test был большим числом og, равным $ today.

Я понимаю, что это, пожалуй, очень неэффективный и глупый способ сделать это, но он сделал трюк, тем более.

Смежные вопросы