You’re correct in your approach. If you post your code will be better, but something like this:
$args = array(
'post_type' => 'project',
'tax_query' => array(
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => $region, //set your region
),
),
);
$the_query = new WP_Query( $args );
// The Loop of Projects by Region
if ( $the_query->have_posts() ) {
$projectsid = array();
while ( $the_query->have_posts() ) {
$the_query->the_post();
$projectsid[] = get_the_ID();
}
$args = array(
'post_type' => 'unit',
'meta_query' => array(
array(
'key' => $keyname, //set the key name which store ID
'value' => $projectsid,
'compare' => 'IN',
'type' => 'NUMERIC'
),
),
);
$the_query = new WP_Query( $args );
// The Loop of units in project per region
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
//do something
}
} else {
//No units for projects in this region
}
} else {
//No projects in this region
}
wp_reset_query();