Как правильно оформить запрос в WP 2.7 Ru для получения статей из нескольких категорий одновременно?
Другими словами, выводить статью, когда она находится, к примеру, и в категории с ID=1 и категории с ID=2 одновременно?
С помощью плагина WordPress Subdomains, сделал для разных рубрик поддомены.
Тема используется WP Max.
В теме используются блоки для отображения из выбранных категорий (настраивается в теме) по несколько постов. Другими словами можно отображать несколько рубрик, на которые есть необходимость обратить внимание в первую очередь посетителя.
Не буду распыляться больше про WP Max, кто не знает, советую.
имя сайта test.info
Итак есть рубрики Россия и Украина с метками "ru" и "ua" соответственно и ID у них 1 и 2 соответственно.
С помощью плагина теперь можно заходить в рубрики по адресам ru.test.info и ua.test.info .
Теперь заходя по адресу ru.test.info или ua.test.info я вижу то же самое, если бы я заходил на test.info.
привожу пример того, как это работает сейчас:
<?php
$featured = new WP_query();
//здесь $mytheme['featured'] - это ID избранной мною темы, предположим переменная равна 3.
$featured->query('showposts=10&cat='.$mytheme['featured']); //оформляю запрос
?>
//вывожу
<?php while ($featured->have_posts()) : $featured->the_post(); ?>
<?php endwhile; ?>
Необходимо когда попадаешь в одну из этих рубрик ( "ru" или "ua") отображать статьи которые относятся одновременно и к избранной рубрике и рубрике ru или ua, другими словами исспользовать в запросе логическое И.
Всё казалось бы хорошо и просто, если написать функцию которая могла бы проверить нахожусь ли я сейчас в рубрике RU или UA и если да, то добавить ID этой рубрики в запрос…
Это теоретически, а как сделать это практически, думал что понимал, но по-факту ошибаюсь…
вот как я это сделал:
<?php
function sort_by_category_fun ( $ch = '', $ch2 = '', $ch3 = '' )
{//не буду вдаваться в подробности этой функции, чтобы не загромождать заголовок темы, будет надо, напишу.
//проверяю это RU или UA, если да возвращаю $ch . "ID этой рубрики" . $ch2, если нет возвращаю
// переменную $ch3
}
?>
<?php
$featured = new WP_query();
$featured->query('showposts=10&cat='.sort_by_category_fun('',',','') .$mytheme['featured']); //оформляю запрос
//содержимое $featured->query сейчас будет следующим, если это UA: 'showposts=10&cat=2,3'
//если же это не RU или не UA то запрос будет таким: 'showposts=10&cat=3'
//казалось бы всё в порядке, перечисляем в запросе через запятую рубрики в формате: cat=1,2,итд...
//но этот запрос работает как ИЛИ, когда нужно И.
?>
//вывожу
<?php while ($featured->have_posts()) : $featured->the_post(); ?>
<?php endwhile; ?>
Нашёл в кодексе Вордпреса описание оформления запроса
тэг category__and
и я попробовал сделать так:
<?php
$featured = new WP_query();
if ( is_category(1) or is_category(2) ) //если это категория RU или UA
$featured->query( array( 'showposts' =>10, 'category__and' => array( $mytheme['featured'],sort_by_category_fun() )) ); //оформляю запрос если это RU или UA
else $featured->query('showposts=10&cat='.$mytheme['featured']); //оформляю запрос если это не RU или UA
?>
//вывожу
<?php while ($featured->have_posts()) : $featured->the_post(); ?>
<?php endwhile; ?>
Казалось бы вот оно, счастья, да не тут-то было…
Всё-равно это работает как ИЛИ…. 🙁
Как лучше это сделать? В чём загвоздка?
Парадоксально что запрос вида:
cat=-3,-4
работает как И не, И не
cat=1,-3,-4
работает как И, И не, И не
cat=1,2
работает как ИЛИ
Извиняюсь за флуд, тема уже была написана с менее удачным названием
Поддомены(субдомены, Subdomian) Для категорий, Miltiple Category Query