如何在单个帖子wordpress api中获得上一个和下一个帖子,我无法得到这个,如何在没有API的wordpress中使json prev和next 我想获得slug帖子我可以在单个帖子中使用下一个prev,如何获得slug,link或id post for next和prev
<?php
$prev_post = get_previous_post();
if (!empty( $prev_post )): ?>
<a href="<?php echo $prev_post->guid ?>"><?php echo $prev_post->post_title ?></a>
<?php endif ?>
喜欢这样,但在json https://codex.wordpress.org/Function_Reference/previous_post_link
答案 0 :(得分:8)
派对有点晚了 - 但这是一个答案。
虽然我同意@Chris的回答,即REST API与主题可用的PHP API不同,但有时我们仍然会从数据中构建相同的前端,对吧?
如果我想在我的博客上显示下一篇和上一篇文章的链接,我不想向API发送3个请求。
作为一种解决方案,我将其包含在我的插件中,其中包含针对特定项目的API调整:
// Add filter to respond with next and previous post in post response.
add_filter( 'rest_prepare_post', function( $response, $post, $request ) {
// Only do this for single post requests.
if( $request->get_param('per_page') === 1 ) {
global $post;
// Get the so-called next post.
$next = get_adjacent_post( false, '', false );
// Get the so-called previous post.
$previous = get_adjacent_post( false, '', true );
// Format them a bit and only send id and slug (or null, if there is no next/previous post).
$response->data['next'] = ( is_a( $next, 'WP_Post') ) ? array( "id" => $next->ID, "slug" => $next->post_name ) : null;
$response->data['previous'] = ( is_a( $previous, 'WP_Post') ) ? array( "id" => $previous->ID, "slug" => $previous->post_name ) : null;
}
return $response;
}, 10, 3 );
这给你这样的东西:
[
{
"ID": 123,
...
"next": {
"id": 212,
"slug": "ea-quia-fuga-sit-blanditiis"
},
"previous": {
"id": 171,
"slug": "blanditiis-sed-id-assumenda"
},
...
}
]
答案 1 :(得分:0)
我99%肯定Wordpress API不提供此功能,因为它在“休息”环境中毫无意义。
许多Wordpresses旧功能的目的是让生活变得更轻松(比如previous_post_link),并且可以通过a)做出假设(你正在建立一个按顺序列出的帖子的博客)和b)制定自己的规范。
通过引入Rest(并且能够宣称它是Rest-ish)引用前一个/下一个元素没有多大意义,除非它被特别定义为关系。例如,一个“飞机”休息终点将乘客视为一种关系是有意义的:/api/planes/f0556/passengers
但由于上下文可能会改变(下一次离开的航班,因此下一次/上次航班没有意义) ?到达?)。
相反,您需要查询/api/planes/
(索引)端点以获取此端点的所有航班,并选择您需要的航班。