私はこれと同じ問題に遭遇し、MySQLリクエストを行うことで解決しました。
つまり、get_post($ args)は、category = MyCategory または tag = MyTag を持つ投稿を返します。
ORをANDに変更する必要があります。
私の論理は、MySQLクエリをそのまま使用することでした。
- クエリ1 =カテゴリMyCatを持つすべての投稿を選択する
- クエリ2 =タグMyTagを持つすべての投稿を選択
- 最後に、クエリ1およびクエリ2に含まれるすべての投稿を選択します。
query_post()の代わりにwpdb を使用しました。
少しのコード (カテゴリ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);
これは汚い方法ですが、それが役に立てば幸いです=)