Я пытаюсь сделать сайт WordPress с шестью списками на странице, в каждом списке показаны сообщения из другой категории. Просто.
Но тогда, если пользователь выбирает тег, беря их на эту страницу архива тегов, я хочу, чтобы они все еще видели шаблон с шестью списками, но все сообщения в каждой категории также фильтруются тегом. Поэтому списки сообщений фильтруются сначала по тегу, а затем по категориям.
Насколько я могу судить, нет никакого способа сделать это с помощью query_posts или чего-то еще, ему нужно более продвинутое использование базы данных, но я не знаю, как это сделать! Я думаю, что здесь есть аналогичный вопрос, но поскольку я знаю очень мало PHP и не MySQL, я не могу понять ответы!
Хорошо, я наконец нашел относительно простое решение этого.
В WordPress есть ошибка, препятствующая запросу обеих категорий и тегов, поэтому query_posts('cat=2&tag=bread');
не работает, но путь вокруг этого – query_posts('cat=2&tag=bread+tag=bread');
который волшебным образом работает.
В шаблоне tag.php я хотел, чтобы он взял тег из этого архива, поэтому мне пришлось это сделать:
<?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?>
который отлично работает.
Попробуйте этот код:
query_posts('tag=selected_tag'); while (have_posts()) : the_post(); foreach((get_the_category()) as $category) { if ($category->cat_name == 'selected_category') { // output any needed post info, for example: echo the_title(); } } endwhile;
Согласно API WordPress , вы можете фильтровать теги в вызове query_posts
.
Примеры:
query_posts('tag=cooking'); query_posts('tag=bread,baking'); query_posts('tag=bread+baking+recipe');