phpdew
  • 0
Новичок

Как выбрать сообщения из нескольких категорий и метазначений?

  • 0

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

query_posts( array( 'category__and' => array(1,2,3) ) );

Но также мне нужно из этих выбранных категорий выбрать только те сообщения, которые имеют определенное значение meta_value из таблицы wp_postmeta. Эту задачу я могу выполнить с помощью sql-запроса:

SELECT DISTINCT (
p.ID
), p . *
FROM wp_posts AS p
INNER JOIN wp_postmeta AS p1 ON ( p.ID = p1.post_id )
CROSS JOIN wp_postmeta AS p3
USING ( post_id )
WHERE p3.meta_key = 'length'
AND convert( p3.meta_value, signed )
BETWEEN '".$min_length."'
AND '".$max_length."'
AND post_status = 'publish'
$subSelect
ORDER BY p.ID DESC

Я не понимаю, как я могу выбрать, например, только те сообщения, у которых есть категория 1, И 2, И 3, И длина мета_ключа postmeta МЕЖДУ $min_length И $max_length?

Share
  1. Начиная с версии 3.1 WP значительно расширил запросы пользовательских полей. Если я правильно понял код, ваш запрос должен быть примерно таким:

    query_posts(array(
        'category__and' => array(1,2,3),
        'meta_query' => array(
            array(
                'key' => 'length',
                'value' => array($min_length, $max_length),
                'compare' => 'BETWEEN',
                'type' => 'NUMERIC',
            ),
        ),
    ));
    

    Видеть:

    • 0

Оставить ответ

You must login to add an answer.