Intereting Posts
Преобразование даты в формат даты ISO8601 Несколько циклов на главной странице с различными фильтрами / действиями Создание «глоссария» сообщений WordPress определенного типа сообщения Существует ли ограничение WP в использовании функции загрузки jQuery? Как исключить авторов из get_pages () Измените параметр «Изменить профиль», но все еще можно просмотреть профиль Как добавить сообщение в меню Как я могу удалить корзину с определенных страниц? Как сделать несколько зависимых полей ввода, которые используют функцию автозаполнения jquery? Как создать короткие URL-адреса для совместного использования и загружаемого контента? Отображение пользовательских сообщений только в том случае, если дата нестандартного метаданного не истекла Прерванный скрипт cron отправляет мне почасовые письма. Пожалуйста помоги! Ошибка get_the_terms Почему мои данные wp_posts настолько огромны? Metabox сохраняет информацию об обновлении или публикации, но не о сохранении черновика

meta_query compare не делать то, что я хочу, чтобы он делал

Я пытаюсь запустить запрос, который показывает сообщения только в том случае, если это метазначение имеет строку даты, меньшую, чем строка текущей даты. Ниже приведен пример.

<?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', необходимо хотя.

Обратите внимание на последнюю строку … очень полезно для отладки этих вещей.