2009-06-18 10 views
7

Próbuję utworzyć witrynę WordPress, która ma sześć list na stronie, a każda lista zawiera wpisy z innej kategorii. Prosty.WordPress - tworzenie listy postów filtrowanych według tagów, a następnie kategorii

Ale jeśli użytkownik wybierze znacznik, zabierając go na tę stronę archiwum znaczników, chcę, aby nadal widzieli szablon z sześcioma listami, ale wszystkie posty w każdej kategorii są również filtrowane przez znacznik. Listy wpisów są filtrowane najpierw według tagów, a następnie według kategorii.

O ile wiem, nie ma sposobu, aby to zrobić za pomocą query_posts lub czegokolwiek, potrzebuje bardziej zaawansowanego korzystania z bazy danych, ale nie mam pojęcia, jak to zrobić! Myślę, że jest tu podobne pytanie, ale ponieważ znam bardzo mało PHP i nie mam MySQL, nie mogę zrozumieć odpowiedzi!

Odpowiedz

5

rację, w końcu znaleźć stosunkowo proste rozwiązanie tego.

W WordPressie występuje błąd uniemożliwiający działanie zapytania zarówno kategorii, jak i tagów, więc query_posts('cat=2&tag=bread'); nie będzie działał, ale sposób obejścia tego jest query_posts('cat=2&tag=bread+tag=bread');, który działa w magiczny sposób.

W szablonie Tag.php, chciałem odebrać tag z tego archiwum, więc musiałem to zrobić:

<?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?> 

który działa doskonale.

0

Zgodnie z można filtrować według znaczników w ramach połączenia z numerem query_posts.

Przykłady:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

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

Niestety to zapytanie zastąpi kategorię i nie będzie można jej użyć do filtrowania według kategorii w tagu. Będą wyświetlane tylko wszystkie posty z tą kategorią i wszystkie posty w tym tagu. –

+0

Możesz początkowo wywołać get_query, aby uzyskać tablicę postów filtrowanych według tagów. Następnie wykonaj iterację i ręcznie przydzielaj posty do tablicy dla każdej z sześciu kategorii. –

+0

To brzmi jak idealna rzecz, ale nie jestem PHP, więc nie mam pojęcia, jak to zrobić! –

2

wypróbować ten kod:

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

Bez żadnych błędów, nic nie wyprodukował: S –

+0

Zastąpiłeś "selected_tag" i "selected_category" własnymi wartościami, prawda? 8) Może być przydatne umieszczenie tego kodu w szablonie wordpress i zrobienie 6 z nich dla każdej strony. – Wiseman

+0

Zrobiłem oba te rzeczy :) –

Powiązane problemy