2009-06-18 2 views
7

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

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

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

ответ

5

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

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

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

0

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

Примеры:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

query_posts('tag=bread+baking+recipe'); 
+0

К сожалению, этот запрос переопределит категорию, и вы не сможете использовать его для фильтрации по категориям в теге, он будет показывать только сообщения с этой категорией и всеми сообщениями в этом теге. –

+0

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

+0

Это звучит как идеальная вещь, но я не PHPer, поэтому я понятия не имею, как это сделать! –

2

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

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

Нет ошибок или чего-либо еще, ничего не созданного: S –

+0

Вы заменили 'selected_tag' и 'selected_category' своими собственными значениями, не так ли? 8) Может быть полезно разместить этот код в шаблоне Wordpress и сделать 6 из них для каждой страницы. – Wiseman

+0

Я сделал обе эти вещи :) –

Смежные вопросы