0

我有一个名为“jobs”的自定义帖子类型,其分类法称为“job-status”。我正在尝试显示具有特定税收条款(工作完成)的工作列表,这些工作没有在文件 ACF 字段类型中上传到他们的报告。

第一部分有效;我已经让它返回具有该分类的工作列表。我无法使用 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 (
      'relation' => 'AND',
        array (
          'key' => 'report_upload',
          'value' => '',
          'compare' => 'NOT EXISTS'
        )
    )
));
4

2 回答 2

1

你很近!我认为你只需要从中删除'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' => '='
        )
    )
));
于 2020-03-26T22:10:26.553 回答
0

完整的工作代码,以防它在未来帮助任何人


$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 (
      'relation' => 'AND',
        array (
          'key' => 'report_upload',
          'value' => '',
          'compare' => '='
        )
    )
));
于 2020-03-26T22:27:03.137 回答