WP_Query получает сообщение из категории и из другого типа сообщения

У меня есть 2 типа сообщений (сообщение и помощь). В post (post type) есть категория с именем «Hello», и я хочу получить все сообщения из категории «Hello» (post_type = post и category_id = 2), а также все сообщения из «типа» типа post с помощью uniq WP_Query.

Это не работает:

$categoryId = 2; $page = get_query_var('paged', 1); $post_per_page = get_option('posts_per_page', 10); $params = array( 'post_type' => array('help', 'post'), 'post_status' => array('publish'), 'cat' => $categoryId, 'paged' => $page, 'posts_per_page' => $post_per_page, 'orderby' => 'date', 'order' => 'DESC', ); $q = new WP_Query($params); 

Хорошим способом может быть тот, который объясняется здесь

В основном вы получаете разные результаты запросов отдельно, назначая их двум различным переменным, объединяя два набора результатов в массив, получая идентификаторы всех этих объединенных массивов и, наконец, запрашивая ID.

 $args1 = array( 'post_type' => 'help', 'post_status' => 'publish' ) $args2 = array( 'post_type' => 'post', 'cat' => $categoryId, 'post_status' => 'publish' ) $help_posts = get_posts( $args1 ); $post_posts = get_posts( $args2 ); $combined_query_array = array_merge ($help_posts, $post_posts ); //merge $post_myneeded_IDs = wp_list_pluck( $combined_query_array, 'ID' ) //squeeze IDs out $desidered_query = get_posts( array( 'post__in' => $post_myneeded_IDs, 'orderby' => etc. etc )); 

обновить, следуя комментариям .. используя 'fields' => 'ids'

 $args1 = array( 'post_type' => 'help', 'post_status' => 'publish', 'fields' => 'ids' ) //now get_posts() will return just a collection of IDs $args2 = array( 'post_type' => 'post', 'cat' => $categoryId, 'post_status' => 'publish', 'fields' => 'ids' ) $help_posts_ids = get_posts( $args1 ); $post_posts_ids = get_posts( $args2 ); $combined_posts_ids = array_merge ($help_posts_ids, $post_posts_ids ); //merge $desidered_query = get_posts( array( 'post__in' => $combined_posts_ids, 'orderby' => etc. etc ));