WordPress - создание списка сообщений, отфильтрованных по тегу, а затем по категории - PullRequest
7 голосов
/ 18 июня 2009

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

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

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

Ответы [ 3 ]

5 голосов
/ 26 августа 2009

Правильно, я наконец нашел относительно простое решение для этого.

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

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

2 голосов
/ 19 июня 2009

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

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;
0 голосов
/ 19 июня 2009

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

Примеры:

query_posts('tag=cooking');

query_posts('tag=bread,baking');

query_posts('tag=bread+baking+recipe');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...