Я пытаюсь запустить запрос, который показывает сообщения только в том случае, если это метазначение имеет строку даты, меньшую, чем строка текущей даты. Ниже приведен пример.
<?php $current = date('Ymd'); // Eg: today would be 20131011 $date = get_post_meta($post->ID, 'event_date', true); // (Eg; 19690816) $args ( 'post_type' => 'event', 'posts_per_page' => -1, 'meta_query' => array( 'key' => 'event_date', 'value' => $current, 'compare' => '<', 'type' => 'numeric' ) ); ?>
Но, похоже, это не работает.
Значение $date
определено мета-полем и возвращает строку в том же формате, что и $current
значение $current
поэтому оно просто сравнивает 2 числовых значения друг с другом.
У кого-нибудь есть идеи? Я пробовал это противоположным образом, используя символ больше, чем символ, и он тоже не хочет работать.
Я проверил четыре раза имя типа сообщения, значения и т. Д., И все они верны.
Ваш код выглядит действительным для меня. Единственное, что вы можете попробовать, это «NUMERIC» вместо «numeric» и для перевода $current
в int
поскольку date()
вернет строку.
$current = (int)date('Ymd');
Чтобы отладить это, вы можете разместить это прямо под своим кодом:
global $wpdb; var_dump( $wpdb->last_query );
Затем вы получите полный запрос и можете вставить его в оболочку sql (phpMyAdmin или все, что вы предпочитаете), чтобы увидеть, что с ним не так.
Если это не решит ваш вопрос, не стесняйтесь редактировать свой вопрос с полным SQL-запросом, и я посмотрю на него.
meta_query
– массив массивов. У вас есть только массив (и синтаксическая ошибка). Ты нуждаешься в этом:
$current = date('Ymd'); // Eg: today would be 20131011 $date = get_post_meta($post->ID, 'event_date', true); // (Eg; 19690816) $args = array( 'post_type' => 'event', 'posts_per_page' => -1, 'meta_query' => array( // an array array( // of arrays 'key' => 'event_date', 'value' => $current, 'compare' => '<', 'type' => 'numeric', ) ) ); $q = new WP_Query($args); var_dump($q->request);
Я сомневаюсь, что 'type' => 'numeric',
необходимо хотя.
Обратите внимание на последнюю строку … очень полезно для отладки этих вещей.