Как я получаю значение meta от WP_Query?

У меня есть пользовательский тип сообщения foo с meta названными полями bar и baz. Теперь я добираюсь WP_Query объектное использование:

$args = array( 
       'post_type'      => 'foo', 
       'meta_key'       => 'bar', 
       'meta_value'     => $bar_value,
       'posts_per_page' => 10,
);
$res = new WP_Query($args);

Теперь я хочу проверить если значение baz из выбранного сообщения равно $baz_value. Как я могу сделать это?

3
10.10.2013, 18:19
3 ответа

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

Решение:

if($res->have_posts()) { 
    $id = $mail_res->posts[0]->ID; // blindly assuming there is only 1 post having baz = baz_value
    $true_baz = get_post_meta($id, 'baz')[0];

    if($true_baz== $baz) {
        //success
    } else {
        //error
    }
} else {
    //error
}
2
19.02.2020, 22:18

Сделал Вас, попробовал этого:

$args = array( 
   'post_type'      => 'foo', 
   'meta_key'       => 'bar', 
   'meta_value'     => $bar_value,
   'posts_per_page' => 10,
);
$res = new WP_Query($args);

 to 
  $args = array( 
   'post_type'      => 'foo', 
   'meta_key'       => 'bar', 
   'meta_value'     => $bar_value,
   'meta_compare'     => '=',
   'posts_per_page' => 10,
);
$res = new WP_Query($args);

Чтение это: WP_Query

1
19.02.2020, 22:18

Аргументы запроса находятся в нескольких местах в объекте запроса. Вы можете var_dump объект и видит их.

  1. $res->query_vars
  2. $res->meta_query (в этом случае)
  3. $res->query

Объекты 1 и 3 будут самыми легкими работать с. Простой объект PHP и синтаксис массива получат информацию, в которой Вы нуждаетесь.

0
19.02.2020, 22:18

Теги

Похожие вопросы