Wordpress API json,如何在单个帖子中获得上一个和下一个帖子?

Ikh*_*dri 5 api wordpress json wp-api

如何在单个帖子wordpress api中获得上一个和下一个帖子,我无法得到这个,如何使json上一个和下一个像没有API的wordpress我想得到slug帖子我可以在单个帖子中使用下一个prev,如何获得下一个和上一个的slug,link或id post

<?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 ?>
Run Code Online (Sandbox Code Playgroud)

像这样但在json中使用 https://codex.wordpress.org/Function_Reference/previous_post_link

Tho*_*ert 10

派对有点晚了 - 但这是一个答案.

虽然我同意@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 );
Run Code Online (Sandbox Code Playgroud)

这给你这样的东西:

[
  {
    "ID": 123,
    ...
    "next": {
      "id": 212,
      "slug": "ea-quia-fuga-sit-blanditiis"
    },
    "previous": {
      "id": 171,
      "slug": "blanditiis-sed-id-assumenda"
    },
    ...
  }
]
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 0

我 99% 确信 Wordpress API 不提供此功能,因为它在“Rest”环境中没有什么意义。

许多 Wordpress 的旧功能旨在让生活更轻松(例如 previous_post_link),并且可以通过以下方式工作:a)做出假设(您正在构建一个按顺序列出帖子的博客)和 b)制定自己的规范。

通过引入 Rest(并且能够声称它是 Rest-ish),引用上一个/下一个元素没有多大意义,除非它被明确定义为关系。例如,“飞机”休息端点将乘客作为一种关系进行监听是有意义的:/api/planes/f0556/passengers但是下一个/上一个航班就没有意义,因为上下文可能会发生变化(是下一个起飞的航班吗?要到达吗?) 。

相反,您需要查询/api/planes/(索引)端点以获取该端点两侧的所有航班,并选择您需要的航班。