Запрос WP один и тот же запрос, другой синтаксис - один из которых не работает


У меня есть WP_Query, который хорошо работает:

$args = array(
'post_type' => 'product',
'meta_key'  => 'product_subtype',
'meta_value'=> 'public',
'compare'   => '='      
);

Но так как я хочу найти несколько метаключей, я попробовал синтаксис "массива":

$args = array(
'post_type' => 'product',
'meta_query' => array(                 
                  array(
                    'meta_key'     => 'product_subtype',
                    'meta_value'   => 'public',
                    'compare'      => '='
                      ),
                    ),                  
); 

Но это не работает - он выдает мне все сообщения с 'post_type' = 'product' - хотя это тот же самый запрос. Я не знаю, почему. Может ли кто-нибудь указать на ошибку?

Я выполняю запрос следующим образом (как сказано во всех учебниках, которые я нашел)

$the_query = new WP_Query( $args );

Как я уже сказал, первый способ работает, и я получаю только продукты с "product_subtype = public" второй игнорирует массив мета-запросов. Но почему?

Author: Brian Tompsett - 汤莱恩, 2015-07-02

1 answers

Как упоминалось в комментарии, вы неправильно используете WP_Query. Здесь нет большой ошибки, но если вы пройдете через Кодекс для WP_Query, Вы заметите, что массив meta_query используется без префикса meta_.

Поэтому, если вы удалите префикс meta_ из своего запроса, он будет работать так, как ожидалось.

 2
Author: Rohil_PHPBeginner, 2015-07-02 11:32:12