Saya tersandung ke masalah yang sama dan mengatasinya dengan membuat permintaan MySQL.
singkatnya: get_post ($ args) akan mengembalikan Anda posting yang memiliki kategori = MyCategory ATAU tag = MyTag.
yang Anda inginkan adalah mengubah OR Anda menjadi DAN .
Logika saya adalah langsung dengan MySQL Query:
- Kueri 1 = Pilih semua posting yang memiliki kategori MyCat
- Kueri 2 = Pilih semua posting yang memiliki tag MyTag
- Terakhir: Pilih semua posting yang ada di Kueri 1 DAN Kueri 2.
Saya menggunakan wpdb alih-alih query_post ();
Sedikit kode (mengembalikan posting yang diterbitkan dengan kategori MyCat dan tag 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);
Ini adalah cara kotor untuk melakukannya tetapi saya harap ini membantu =)