WordPress - создание списка сообщений, отфильтрованных по тегу, а затем по категории
Я пытаюсь создать сайт WordPress, на странице которого есть шесть списков, в каждом из которых отображаются сообщения из другой категории. Простой.
Но затем, если пользователь выберет тег, перейдя на страницу архива тегов, я хочу, чтобы они по-прежнему видели шаблон из шести списков, но все сообщения в каждой категории также фильтруются по тегу. Таким образом, списки сообщений фильтруются сначала по тегам, а затем по категориям.
Насколько я могу судить, нет способа сделать это с помощью query_posts или что угодно, это требует более продвинутого использования базы данных, но я понятия не имею, как это сделать! Я думаю, что здесь есть аналогичный вопрос, но поскольку я очень мало знаю PHP и не знаю MySQL, я не могу понять смысл ответов!
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']); ?>
, который отлично работает.
Попробуйте этот код:
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');