ฉันพบปัญหาเดียวกันนี้และแก้ไขมันด้วยการร้องขอ MySQL
กล่าวโดยย่อ: get_post ($ args) จะส่งคืนโพสต์ที่มีหมวดหมู่ = MyCategory หรือแท็ก = MyTag
สิ่งที่คุณต้องการคือการเปลี่ยนของคุณหรือการและ
ตรรกะของฉันคือตรงไปกับแบบสอบถาม MySQL:
- แบบสอบถาม 1 = เลือกโพสต์ทั้งหมดที่มีหมวดหมู่ MyCat
- แบบสอบถาม 2 = เลือกโพสต์ทั้งหมดที่มีแท็ก MyTag
- สุดท้าย: เลือกโพสต์ทั้งหมดที่อยู่ใน Query 1 และ Query 2
ฉันใช้wpdbแทน query_post ();
รหัสเล็กน้อย (ส่งคืนโพสต์ที่เผยแพร่พร้อมหมวดหมู่ MyCat และแท็ก 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);
นี่เป็นวิธีที่สกปรกที่จะทำ แต่ฉันหวังว่ามันจะช่วย =)