Hiển thị tất cả các bài đăng trong một loại bài tùy chỉnh, được nhóm theo phân loại tùy chỉnh

https://www.it-swarm-vi.tech/vi/custom-post-types/hien-thi-tat-ca-cac-bai-dang-trong-mot-loai-bai-tuy-chinh-duoc-nhom-theo-phan-loai-tuy-chinh/956791654/

Hiển thị tất cả các bài đăng trong một loại bài tùy chỉnh, được nhóm theo phân loại tùy chỉnh

Tôi làm việc trên một trang thành viên nơi tôi sử dụng loại bài đăng tùy chỉnh với phân loại tùy chỉnh. Loại bài đăng tùy chỉnh của tôi được gọi là member và phân loại tùy chỉnh của tôi được gọi là member_groups.

Tôi muốn liệt kê tất cả các thành viên nhưng nhóm chúng lại thành các nhóm tương ứng.

Vì vậy, để rõ ràng, tôi đã chia thành 35 nhóm thành 9 nhóm - vì vậy thay vì thực hiện cùng một truy vấn chín lần tôi muốn thực hiện một lần nhưng nhóm chúng lại với nhau, để Thành viên1, Thành viên4 và Thành viên 11 được nhóm lại thành một nhóm, được gọi là Marketing Marketing.

Tôi sử dụng WP_Query để lấy tất cả các bài đăng dưới dạng thành viên. Tôi đã thử nhiều cách khác nhau nhưng không có kết quả thành công.

Làm thế nào tôi có thể đạt được điều đó?custom-post-typescustom-taxonomywp-queryloop 164 thg 11, 2011Mestika

Tôi đã tìm thấy một giải pháp bằng cách sử dụng một truy vấn tùy chỉnh và sau đó nhóm nó với tên thuật ngữ:

SELECT * 
FROM wp_term_taxonomy AS cat_term_taxonomy
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id = cat_terms.term_id
INNER JOIN wp_term_relationships AS cat_term_relationships ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id
INNER JOIN wp_posts AS cat_posts ON cat_term_relationships.object_id = cat_posts.ID
INNER JOIN wp_postmeta AS meta ON cat_posts.ID = meta.post_id
WHERE cat_posts.post_status =  'publish'
AND meta.meta_key =  'active'
AND meta.meta_value =  'active'
AND cat_posts.post_type =  'member'
AND cat_term_taxonomy.taxonomy =  'member_groups'

Sau đó, chỉ bằng cách sử dụng truy vấn foreach thông thường, tôi có thể trích xuất thông tin tôi muốn.

Nhưng tôi vẫn quan tâm đến một cách khác nếu có, có thể bằng cách sử dụng các chức năng riêng của Wordpress. 64 thg 11, 2011Mestika

Vì vậy, bạn có thể xem xét tự động hóa nhiều truy vấn.

Trước tiên, hãy lấy danh sách các thuật ngữ trong phân loại tùy chỉnh của bạn, sử dụng get_terms() :

Sau đó, lặp qua từng cái, chạy một truy vấn mới mỗi lần:

Tôi không thể thấy bất cứ điều gì đặc biệt sai với cách tiếp cận này, mặc dù nó có thể có khả năng mở rộng hạn chế (nghĩa là nếu bạn có hàng trăm hoặc hàng ngàn thành viên, hoặc các điều khoản của thành viên, bạn có thể thấy các vấn đề về hiệu suất). 2725 thg 1, 2012Chip Bennett

thậm chí đơn giản hơn:

Trong mảng $ bài viết kết quả, mỗi thuật ngữ thuế là chìa khóa cho một mảng lồng nhau chứa các bài đăng của nó. 44 thg 4, 2012djb

Tôi đã có nhu cầu chính xác này và Giải pháp của Chip đã hoạt động, ngoại trừ một điều: bắt buộc phải có 'field' => 'slug'.

Tôi cũng cần màn hình hiển thị kết quả là phẳng, vì vậy 'get' => 'all' được đặt ở đây.

Hy vọng điều này sẽ giúp người khác ra ngoài. 424 thg 1, 2013bigsweater

Tôi đã phải làm điều này trên một dự án nhiều năm trước. Câu trả lời tương tự với djb, chỉ với một chút chi tiết. Điều này sẽ xuất ra tất cả các tên phân loại của bạn dưới dạng h3, với một danh sách gạch đầu dòng của mỗi tiêu đề bài được liên kết với trang chi tiết của chúng.

311 thg 2, 201561Pixels

Sau đó, khi bạn lặp qua truy vấn này, bạn chỉ có thể sử dụng một if dọc theo các dòng này (trong mã giả php)

Tôi hy vọng điều đó sẽ giúp. Tôi nghĩ rằng bạn đã làm cho điều này phức tạp hơn nhiều so với nó cần phải được.

Thêm thông tin: http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameter 35 thg 11, 2011AKnox

Chà, đó là một chủ đề cũ, nhưng nếu ai đó đi ngang qua tôi, điều này có thể giúp ích. Ý tưởng là sửa đổi truy vấn chính vì vậy chúng tôi không cần phải đi mẫu và tạo các truy vấn và vòng lặp mới ...

PS: Chưa được thử nghiệm trong dbs lớn. Đó là thỏa đáng trong trường hợp của tôi.

Last updated

Was this helpful?