WordPress - создание списка сообщений, отфильтрованных по тегу, а затем по категории


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

Но затем, если пользователь выберет тег, перейдя на страницу архива тегов, я хочу, чтобы они по-прежнему видели шаблон из шести списков, но все сообщения в каждой категории также фильтруются по тегу. Таким образом, списки сообщений фильтруются сначала по тегам, а затем по категориям.

Насколько я могу судить, нет способа сделать это с помощью query_posts или что угодно, это требует более продвинутого использования базы данных, но я понятия не имею, как это сделать! Я думаю, что здесь есть аналогичный вопрос, но поскольку я очень мало знаю PHP и не знаю MySQL, я не могу понять смысл ответов!

Author: AlbertoPL, 2009-06-18

3 answers

Верно, я наконец-то нашел относительно простое решение этой проблемы.

В 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']); ?>

, который отлично работает.

 5
Author: Laura Kalbag, 2009-08-26 13:56:17

Попробуйте этот код:

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;
 2
Author: Wiseman, 2009-06-19 08:44:28

Согласно API Wordpress, вы можете фильтровать по тегам в вызове query_posts.

Примеры:

query_posts('tag=cooking');

query_posts('tag=bread,baking');

query_posts('tag=bread+baking+recipe');
 0
Author: Evan Meagher, 2009-06-18 23:44:41