Фильтровать query_posts по двум настраиваемым полям? - PullRequest
2 голосов
/ 20 октября 2010

Я пытаюсь отфильтровать свои посты, чтобы показывать только те, у которых есть настраиваемое значение для поля «Модель», при сортировке постов по другому настраиваемому полю с именем «Цена».

Вот функцияЯ использую (не работает):

<?php 
global $query_string;
query_posts( $query_string . "&meta_value=Model&orderby=meta_value&meta_key=Price&order=ASC"); 
?>

Эта функция показывает только модели, но не сортирует сообщения по цене.Если я добавлю &meta_value=Model после order=ASC, он сортируется по цене, но показывает все сообщения, а не только модели.

Ответы [ 3 ]

7 голосов
/ 04 августа 2011

Вы смотрели на http://codex.wordpress.org/Class_Reference/WP_Query

В частности, этот раздел:

Обработка нескольких пользовательских полей:

Отображение сообщений из нескольких пользовательских полей:

$args = array(
    'post_type' => 'product',
    'meta_query' => array(
        array(
            'key' => 'color',
            'value' => 'blue',
            'compare' => 'NOT LIKE'
        ),
        array(
            'key' => 'price',
            'value' => array( 20, 100 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
 );
$query = new WP_Query( $args );
1 голос
/ 21 октября 2010

ты пробовал и массив?

$args = array(
  'meta_value' => array('Model','Price')
    );
    query_posts($args);
0 голосов
/ 30 июля 2011

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

<?php
$sql = "
    SELECT ID, meta1.meta_value, meta2.meta_value from $wpdb->posts p
        JOIN $wpdb->postmeta meta1 ON meta1.post_id = p.ID
        JOIN $wpdb->postmeta meta2 ON meta2.post_id = p.ID
    WHERE p.post_status = 'publish'
    AND p.post_type = 'post'
    AND meta1.meta_key = 'Model'
    AND meta2.meta_key = 'Price'
    ORDER BY meta2.meta_value DESC
";
$posts_with_meta = $wpdb->get_col($sql);
$my_query = new WP_Query();
foreach ($posts_with_meta as $p) {
    $post = get_post(intval($p));
    setup_postdata($post);
    print_r($post);
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...