Запрос постов или получение постов по произвольным полям, возможно ли?
3 мар. 2011 г., 19:31:00
Просмотры: 29.2K
Голосов: 9
Если взять стандартный запрос постов.
<?php query_posts('post_type=payment'); while (have_posts()) : the_post();?>
В этот раз я хотел бы сделать запрос постов по 2 произвольным полям, которые могут в них содержаться.
<?php query_posts('post_type=payment'.get_post_meta($post->ID,'bookingref', true).get_post_meta($post->ID,'customerref', true) ); while (have_posts()) : the_post(); ?>
Это не работает. Возможно ли что-то подобное и как это сделать?
Есть идеи?
Замечательно

Robin I Knight
1.56K
Все ответы на вопрос
1
3
Для запроса записей по пользовательским полям можно использовать параметр 'meta_query'
<?php
$args = array(
'post_type' => 'payment',
'meta_query' => array(
array(
'key' => 'bookingref', // ключ метаполя
'value' => 'the_value_you_want', // искомое значение
'compare' => 'LIKE' // тип сравнения
),
array(
'key' => 'customerref', // ключ метаполя
'value' => 'the_value_you_want', // искомое значение
'compare' => 'LIKE' // тип сравнения
)
)
);
query_posts($args); while (have_posts()) : the_post();
?>
Нельзя использовать get_post_meta внутри запроса, так как эта функция возвращает значение, а не ключ, кроме того, она требует ID записи для получения значения, а до выполнения запроса $post->id не определен.

Bainternet
67.7K
3 мар. 2011 г. 19:40:39
Комментарии
да, это лучше моего (удаленного) ответа - meta_query это правильный способ для запроса по нескольким пользовательским ключам

3 мар. 2011 г. 19:51:20
Потрясающе, отличная работа. Хотя вы пропустили скобку. Нужно .. )); query_posts($args) ..

3 мар. 2011 г. 20:01:25
Похожие вопросы
3
ответов
4
ответов