Intereting Posts
Предлагает ли WordPress возможность найти все категории, в которых нет детей? Добавление пользовательских запросов vars к довольно постоянным ссылкам WordPress + Тема Тема => Миниатюры WPTouch Post не работают? Как изменить структуру «permalink» в теме «WordPress Thesis»? Проблемы с перемещением моего сайта WordPress на другой домен / сервер add_post_meta – не работает Избегайте регистрации пользователей конкретным поставщиком электронной почты Запросы Сообщения, которые имеют или не имеют meta_value и порядок от того же ASC Виджет Dashboard, выделенный перед открытием тега HTML Удаленный сценарий jQuery из header.php, любые проблемы? Переупорядочить отображаемые сообщения с помощью JQuery (заголовок AZ / последний отправленный) Что может привести к сбою функций автоматической установки в WordPress (v3.0.3)? Вопрос памяти на WordPress Multisite Создание нескольких функций поиска для сообщений / пользовательских типов сообщений и всего Использовать значение короткого кода на выходе

Используя meta_query, как я могу фильтровать пользовательское поле и заказывать другим?

Со следующим кодом (в functions.php) мои сообщения (события CPT) упорядочиваются _end_date вместо _start_date. Каково надлежащее решение этого вопроса с WP 3.1.3? Конечно, я бы хотел избежать использования устаревшей meta_key .

 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() ) { $query->set( 'post_type', 'event' ); $query->set( 'meta_key', '_start_date' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'order', 'ASC' ); $query->set( 'meta_query', array( array( 'key' => '_end_date', 'value' => time(), 'compare' => '>=', 'type' => 'numeric' ) ) ); } return $query; } 

Solutions Collecting From Web of "Используя meta_query, как я могу фильтровать пользовательское поле и заказывать другим?"

Кажется, это ошибка в WordPress. WordPress фактически изменяет meta_query, если вы укажете orderby и meta_key в качестве запросов. Обычно эта модификация добавляет новую meta_key в качестве первого массива в массив meta_query, и поэтому orderby применяется к первому мета-ключу, указанному в meta_query.

Но когда вы изменяете orderby, meta_key и meta_value query_vars в файле pre_get_posts, из-за ошибки (кажется мне) в WordPress, он добавляет новый массив в существующий мета-запрос, но новый массив не вставлен в первый массив, он добавляется к существующей meta_query. И orderby всегда применяется к первой meta_key в meta_query.

Так как обходной путь до исправления ошибки, вы можете указать meta_key снова в meta_query как первый массив, как в следующем примере:

 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() ) { $query->set( 'post_type', 'event' ); $query->set( 'meta_key', '_start_date' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'order', 'ASC' ); $query->set( 'meta_query', array( array( 'key' => '_start_date' ), array( 'key' => '_end_date', 'value' => time(), 'compare' => '>=', 'type' => 'numeric' ) )); } return $query; }