Мне нужно выбрать сообщения, которые находятся в нескольких категориях и имеют определенное метазначение сообщения. Я могу выбрать несколько категорий с помощью
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?
Начиная с версии 3.1 WP значительно расширил запросы пользовательских полей. Если я правильно понял код, ваш запрос должен быть примерно таким:
Видеть: