나는이 같은 문제에 걸려 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);
이것은 더러운 방법이지만 도움이되기를 바랍니다.