Я натрапив на цю саму проблему і вирішив її, зробивши запит MySQL.
коротше: get_post ($ args) поверне вам повідомлення, у яких категорія = MyCategory АБО тег = MyTag.
що ви хочете змінити OR на AND .
моя логіка полягала в тому, щоб перейти безпосередньо із запитом MySQL:
- Запит 1 = Виберіть усі повідомлення, які мають категорію MyCat
- Запит 2 = Виберіть усі повідомлення з тегом MyTag
- Остаточно: Виберіть усі публікації, які перебувають у запиті 1 та запиті 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);
Це брудний спосіб зробити це, але я сподіваюся, що це допоможе =)