Tôi vấp phải vấn đề tương tự và giải quyết nó bằng cách đưa ra yêu cầu MySQL.
trong ngắn hạn: get_post ($ args) sẽ trả về cho bạn những bài đăng có thể loại = MyC Category HOẶC thẻ = MyTag.
những gì bạn muốn là thay đổi của bạn HAY để VÀ .
logic của tôi là đi thẳng với Truy vấn MySQL:
- Truy vấn 1 = Chọn tất cả các bài đăng có danh mục MyCat
- Truy vấn 2 = Chọn tất cả các bài đăng có thẻ MyTag
- Cuối cùng: Chọn tất cả các bài đăng trong Truy vấn 1 VÀ Truy vấn 2.
Tôi đã sử dụng wpdb thay vì query_post ();
Một chút mã (trả lại các bài đăng được xuất bản với danh mục MyCat và gắn thẻ MyTag) :
$query_byTag="
SELECT wp_posts.ID
FROM wp_posts, wp_term_relationships, wp_terms
WHERE wp_posts.ID = wp_term_relationships.object_id
AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id
AND wp_terms.name = 'MyTag'";
$query_byCat="
SELECT wp_posts.ID
FROM wp_posts, wp_term_relationships, wp_terms
WHERE wp_posts.ID = wp_term_relationships.object_id
AND wp_terms.term_id = wp_term_relationships.term_taxonomy_id
AND wp_terms.name = 'MyCat'";
$query ="
SELECT wp_posts.post_title AS title ,
wp_posts.post_content AS content,
wp_posts.post_date AS blogdate
FROM wp_posts
WHERE wp_posts.post_status = 'publish'
AND wp_posts.ID IN (".$query_byTag.")
AND wp_posts.ID IN (".$query_byCat.")
ORDER BY wp_posts.post_date DESC ";
$result= $wpdb->get_results($query);
Đây là một cách bẩn để làm điều đó nhưng tôi hy vọng nó sẽ giúp =)