WP API按帖子架构过滤

时间:2016-01-24 00:24:04

标签: json wordpress wp-api

是否可以根据其架构返回基于Wordpress Rest API v2的帖子列表:

对于架构列表: http://v2.wp-api.org/reference/posts/

我想通过粘性字段进行过滤,但其他字段也是如此。

到目前为止,我有:

/wp-json/wp/v2/posts?filter[sticky]=true
/wp-json/wp/v2/posts?filter[sticky]=1

两者都返回与标准端点相同的响应:

/wp-json/wp/v2/posts

我已阅读其他资料,详细说明如何按meta或自定义taxonomies排序,但我不相信这与此相同。

2 个答案:

答案 0 :(得分:1)

在浏览文档并查看和发布WP-API Github存储库上的问题后,很明显filter[ignore_sticky_posts]应切换预期的排序行为,以便粘贴帖子始终是第一个(默认)或忽略(使用filter[ignore_sticky_posts]=true)。

然而,currently a bug in WP API使filter[ignore_sticky_posts]标记无法使用。

现在解决此问题的最佳方法是create you own custom endpoint获取数据库中所有粘贴帖子的数据或ID。通过查看代码discussed in this threadthe WP-API documentation,我认为将以下代码添加到functions.php应该可以解决问题:

// Sticky posts in REST - https://github.com/WP-API/WP-API/issues/2210
function get_sticky_posts() {
    $posts = get_posts(
        array(
            'post__in' => get_option('sticky_posts')
        )
    );

    if (empty($posts)) {
        return null;
    }

    return $posts;
}
add_action( 'rest_api_init', function () {
    register_rest_route( 'THEME_NAME/v1', '/sticky', array(
        'methods' => 'GET',
        'callback' => 'get_sticky_posts',
    ));
});

如果您GET / wp-json / THEME_NAME / v1 / sticky ,您应该获得所有粘贴帖子的数组。

我希望这会有所帮助。

答案 1 :(得分:0)

除了Laust Deleuran的回答(感谢Laust!),我创建了他的脚本的更改版本,允许您使用embedded的{​​{1}}功能。

虽然这可能不是“最干净”的解决方案,但它确实可以让您充分利用REST-api的功能。

wp-json

这将在正常 function get_sticky_posts(WP_REST_Request $request) { $request['filter'] = [ 'post__in' => get_option('sticky_posts') ]; $response = new WP_REST_Posts_Controller('post'); $posts = $response->get_items($request); return $posts; } add_action( 'rest_api_init', function () { register_rest_route( 'THEME_NAME/v1', '/sticky', array( 'methods' => 'GET', 'callback' => 'get_sticky_posts', )); }); 查询响应的同一posts中输出粘性schema