Ты рядом! Я думаю, вам нужно только удалить 'value' => '',
из meta_query
, чтобы он выглядел следующим образом:
$posts = get_posts(array(
'post_type' => 'jobs',
'posts_per_page' => -1,
'meta_key' => 'job_date',
'orderby' => 'meta_value',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'job_status',
'field' => 'slug',
'terms' => array( 'complete' )
),
),
'meta_query' => array(
array (
'key' => 'report_upload',
'compare' => 'NOT EXISTS'
)
)
));
Также не требуется 'relation' => 'AND'
, так как это значение по умолчанию.
Если бы у вас была другая мысль, где вам может понадобиться что-то более похожее на это:
$posts = get_posts(array(
'post_type' => 'jobs',
'posts_per_page' => -1,
'meta_key' => 'job_date',
'orderby' => 'meta_value',
'order' => 'ASC',
'tax_query' => array(
array(
'taxonomy' => 'job_status',
'field' => 'slug',
'terms' => array( 'job-complete' )
),
),
// check for case where key does not exist or has an "empty" value (added a relation OR for this one)
'meta_query' => array (
'relation' => 'OR',
array (
'key' => 'report_upload',
'compare' => 'NOT EXISTS'
),
array (
'key' => 'report_upload',
'value' => '',
'compare' => '='
)
)
));