2009-06-18 33 views
7

Tôi đang cố tạo một trang web WordPress có sáu danh sách trên một trang, mỗi danh sách hiển thị các bài đăng từ một danh mục khác. Đơn giản.WordPress - tạo danh sách bài đăng được lọc theo thẻ và sau đó là danh mục

Nhưng sau đó, nếu người dùng chọn thẻ, đưa họ đến trang lưu trữ thẻ đó, tôi muốn họ vẫn thấy mẫu sáu danh sách, nhưng tất cả các bài đăng trong mỗi danh mục cũng được lọc theo thẻ. Vì vậy, danh sách bài đăng được lọc đầu tiên theo thẻ và sau đó theo danh mục. Theo như tôi có thể nói, không có cách nào để làm điều này bằng cách sử dụng query_posts hoặc bất cứ điều gì, nó cần sử dụng nâng cao hơn của cơ sở dữ liệu, nhưng tôi không có ý tưởng làm thế nào để làm điều này! Tôi nghĩ rằng có một câu hỏi tương tự ở đây, nhưng vì tôi biết rất ít PHP và không có MySQL, tôi không thể hiểu được câu trả lời!

Trả lời

5

Phải, tôi cuối cùng đã tìm thấy một giải pháp tương đối đơn giản này.

Có lỗi trong WordPress ngăn truy vấn cả danh mục và thẻ hoạt động, vì vậy query_posts('cat=2&tag=bread'); sẽ không hoạt động, nhưng cách xung quanh đây là query_posts('cat=2&tag=bread+tag=bread'); hoạt động kỳ diệu.

Trong một mẫu tag.php, tôi muốn nó nhặt thẻ từ kho lưu trữ đó, vì vậy tôi đã phải làm điều này:

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

mà hoạt động hoàn hảo.

0

Theo the Wordpress API, bạn có thể lọc theo thẻ trong cuộc gọi đến query_posts.

Ví dụ:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

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

Rất tiếc, truy vấn này sẽ ghi đè danh mục và bạn không thể sử dụng để lọc theo danh mục, thẻ sẽ chỉ hiển thị tất cả các bài đăng có danh mục đó và tất cả bài đăng trong thẻ đó. –

+0

Ban đầu bạn có thể gọi get_query để nhận một mảng bài đăng được lọc theo thẻ. Sau đó lặp lại qua nó và phân bổ các bài viết theo cách thủ công vào một mảng cho từng hạng mục trong sáu loại. –

+0

Điều này nghe có vẻ như là điều hoàn hảo, nhưng tôi không có PHPer, vì vậy tôi không có ý tưởng làm thế nào để làm điều đó! –

2

Hãy thử mã này:

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

Không có lỗi hoặc bất cứ điều gì, chỉ cần sản xuất không có gì: S –

+0

Bạn đã thay thế 'selected_tag' và 'selected_category' bằng các giá trị của riêng bạn, phải không? 8) Có thể hữu ích khi đặt mã này trong mẫu wordpress và tạo 6 trong số đó cho mỗi trang. – Wiseman

+0

Tôi đã thực hiện cả hai thứ đó :) –

Các vấn đề liên quan