是否可以根据其架构返回基于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排序,但我不相信这与此相同。
答案 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 thread和the 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
。