WordPress由ACF查询帖子

时间:2018-05-02 05:19:55

标签: php wordpress advanced-custom-fields

更新 - 已解决

好的,我有三种自定义帖子类型'课程','模块'和'结果'。 这些帖子类型设置有许多ACF(高级自定义字段)。

我正在尝试使用'meta_query'基于他们的ACF查询'结果'CPT。

我想要查询的两个ACF字段是'module'和'user'。

  • 'module' - 设置为'关系'字段类型过滤 'module'自定义帖子类型。
  • '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 ( ) 

更新 - 解决:

好的,所以设法搞清楚了。是由于'module'关系字段将其数据保存为序列化数组: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/

1 个答案:

答案 0 :(得分:1)

更新 - 解决:

好的,所以设法搞清楚了。是由于'module'关系字段将其数据保存为序列化数组: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/