wordpress WP API V2:通过ACF查询帖子

nbnkbykc  于 2022-11-22  发布在  WordPress
关注(0)|答案(1)|浏览(192)

我想查询我的帖子,通过过滤添加了高级自定义字段的自定义 meta。这是一个布尔元,所以每个帖子都会有这样的东西:
获取http://localhost/wp-json/wp/v2/posts

{
  ...
  "acf" : {
    "highlight" : true
  }
  ...
}

我无法按此 meta值进行过滤,即使我在function.php中将meta_key和meta_value公开给REST API:

function my_add_meta_vars ($current_vars) {
    $current_vars = array_merge ($current_vars, array ('meta_key', 'meta_value'));
    return $current_vars;
}
add_filter ('rest_query_vars', 'my_add_meta_vars');

但如果我尝试:
获取http://localhost/wp-json/wp/v2/posts?filter[meta_key]=highlight&filter[meta_value]=true
我看到所有的帖子,好像过滤器被忽略了。

vsmadaxz

vsmadaxz1#

我能够得到这个解决这个定制:

add_filter( 'rest_query_vars', function ( $valid_vars ) {
    return array_merge( $valid_vars, array( 'highlight', 'meta_query' ) );
} );
add_filter( 'rest_post_query', function( $args, $request ) {
    $highlight   = $request->get_param( 'highlight' );

    if ( ! empty( $highlight ) ) {
        $args['meta_query'] = array(
            array(
                'key'     => 'highlight',
                'value'   => $highlight,
                'compare' => '=',
            )
        );      
    }

    return $args;
}, 10, 2 );

并以这种方式执行查询(突出显示的是acf布尔值)
获取/wp-json/wp/v2/帖子?突出显示=1

相关问题