更新-已解决
好的,我有三个自定义的post类型“courses”、“modules”和“results”。
这些post类型由许多acf(高级自定义字段)设置。
我试着根据他们的acf使用“meta_query”来查询“results”cpt。
我试图查询的两个acf字段是'module'和'user'。
“module”-设置为“relationship”字段类型以筛选
“模块”自定义邮件类型。
“user”-设置为(关系)“user”字段类型。
我好像只得到一个空数组。我看过https://www.advancedcustomfields.com/resources/query-posts-custom-fields/#custom-field%20parameters上的例子,但仍然没有任何运气。

function check_results_for_user( $module_id, $user_id ){

  $posts = get_posts(array(
    'numberposts'   => -1,
    'post_type'     => 'results',
    'meta_query'    => array(
            'relation'      => 'AND',
            array(
                'key'       => 'module',
                'value'     => $module_id,
                'compare'   => '=',
            ),
            array(
                'key'       => 'user',
                'value'     => $user_id,
                'compare'   => '=',
            ),
    ),
  ));

  return $posts;

}

调用函数:
print_r(check_results_for_user($post->ID, $currentUserID ));

结果:
Array ( )

更新-已解决:
好吧,所以设法弄清楚了。是因为“模块”关系字段将其数据保存为序列化数组:a:1:{i:0;s:1:"9";}
因此,您必须将比较更改为“like”,并将值包装为“
function check_results_for_user( $module_id, $user_id ){

  $posts = get_posts(array(
    'numberposts'   => -1,
    'post_type'     => 'results',
    'meta_query'    => array(
            'relation'      => 'AND',
            array(
                'key'       => 'module',
                'value'     => '"'.$module_id.'"',
                'compare'   => 'LIKE',
            ),
            array(
                'key'       => 'user',
                'value'     => $user_id,
                'compare'   => '=',
            ),
    ),
  ));

  return $posts;

}

请参阅本页末尾:https://www.advancedcustomfields.com/resources/querying-relationship-fields/

最佳答案

更新-已解决:
好吧,所以设法弄清楚了。是因为“模块”关系字段将其数据保存为序列化数组:a:1:{i:0;s:1:"9";}
因此,您必须将比较更改为“like”,并将值包装为“

function check_results_for_user( $module_id, $user_id ){

  $posts = get_posts(array(
    'numberposts'   => -1,
    'post_type'     => 'results',
    'meta_query'    => array(
            'relation'      => 'AND',
            array(
                'key'       => 'module',
                'value'     => '"'.$module_id.'"',
                'compare'   => 'LIKE',
            ),
            array(
                'key'       => 'user',
                'value'     => $user_id,
                'compare'   => '=',
            ),
    ),
  ));

  return $posts;

}

请参阅本页末尾:https://www.advancedcustomfields.com/resources/querying-relationship-fields/

关于php - ACF的WordPress查询帖子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50127575/

10-10 09:20