Here’s what I’d do. This is mildly tested.
It gets the IDs of all the posts you need and then builds a single query to get the posts in the correct order.
// get your page IDs, I assume this returns an array of integers
$page_ids = get_pageslug(" 'first_page', 'second_page' ");
// get your blog post ID
$blog_ids = new WP_Query( array(
'post_type'=> array( 'blog' ),
'posts_per_page' => 1,
'fields' => 'ids', // just get the ID
'cache_results' => false // because we're only getting the ID
) );
$my_wp_query_args = array(
'post_type' => array( 'blog', 'page' ),
'post__in' => array_merge( $page_ids, $blog_ids->posts ), // merge two arrays of IDs
'meta_key' => 'my_ordering',
'orderby' => 'meta_value_num', // meta_value_num is used *in place of* meta_value
'order' => 'ASC'
);
// NOTE: $wp_query is an internal WP object already so don't overwrite it.
$my_wp_query = new WP_Query( $my_wp_query_args );
while ( $my_wp_query->have_posts() ) : $my_wp_query->the_post();
$box_ordering = get_post_meta($post->ID, 'my_ordering', true);
echo $box_ordering . '<br>'; //outputs meta values for each page/post correctly
endwhile;