I had this exact problem. I just stumbled upon the solution!
In case this helps you, in both my initial queries before the array merge I changed the posts_per_page to be -1 like 'posts_per_page' => -1
instead of 10. When I did this, the pagination links suddenly appeared and worked fine.
I then added 'posts_per_page' => 10
to my final query after the array_merge for it to show 10 per page.
EDIT:
Now looking at your code I see you did that too. Then you should maybe change the way you query as I did, by merging your results array and then doing a query on the merged results. It worked for me and your way did not.
$other_reviews = get_posts(
array(
'fields' => 'ids',
'post_type' => 'post',
'cat' => 36,
'posts_per_page' => -1,
'paged' => $paged,
'orderby' => 'date',
'order' => 'DESC'
)
);
$reviews = get_posts(
array(
'fields' => 'ids',
'post_type' => array( 'reviews1','review2' ),
'posts_per_page' => -1,
'paged' => $paged,
'orderby' => 'date',
'order' => 'DESC'
)
);
Then we merge them together:
// merging ids
$post_ids = array_merge( $other_reviews, $reviews );
and construct the combined query with:
// the main query
$query = new WP_Query(
array(
'post_type' => 'any',
'post__in' => $post_ids,
'paged' => $paged,
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 10
)
);