0

我有一个使用 WordPress REST API 和高级自定义字段ACF的站点。我使用插件ACF TO REST API将 AC 字段公开给 REST API。到目前为止,一切都很好。

但现在我想在 wordpress 后端的 «Preview Changes» 按钮中添加正常功能。我设法更改了按钮的功能,并且我还了解到,推送它确实会将帖子自动保存到新的修订版中。要访问和显示预览,我必须获取帖子最新版本的数据。我可以这样做,但 REST API 只公开核心的 wordpress 内容(如标题、内容、摘录等),而不是属于该帖子的 ACF。

我想访问 wordpress REST API 路由以获取帖子的最新版本,包括(更改的)ACF 字段的内容。

有人可以帮助我如何编写一个完全可以做到这一点的自定义路线吗?我尝试将此功能添加到 ACF TO REST API 插件,但到目前为止我没有成功。

我想我已经调用了一个 REST API 路由,其中​​包含了帖子(或页面)ID,然后它会调用返回该页面的修订版(我已经在这里> wp/v2/pages/51/revisions/

这向我展示了一系列修订条目,如下所示:

{
    "author": 1,
    "date": "2017-11-17T18:19:51",
    "date_gmt": "2017-11-17T17:19:51",
    "id": 461,
    "modified": "2017-11-17T18:19:51",
    "modified_gmt": "2017-11-17T17:19:51",
    "parent": 51,
    "slug": "51-autosave-v1",
    "guid":
    {
        "rendered": "http://[DOMAIN]/51-autosave-v1/"
    },
    "title":
    {
        "rendered": "post title"
    },
    "content":
    {
        "rendered": "post content"
    },
    "excerpt":
    {
        "rendered": ""
    },
    "_links":
    {
        "parent": [
        {
            "href": "http://[DOMAIN]/api/wp/v2/pages/51"
        }]
    }
},

但现在我只想要最新的版本。最新的修订似乎就像一个普通的帖子,并且有一个普通的帖子 ID(我称之为RevisionID,这将461在上面的示例中)。

然后我需要查询所有 post_meta 条目,'post_id' = RevisionID 并将结果与​​最新版本的结果合并。

有人可以确认吗?

我也会很高兴得到一些帮助,我可以为 Wordpress REST API 设置查询以过滤我想要的结果。

感谢您的帮助。

干杯

4

1 回答 1

2

目前我的插件 ACF to REST API 不支持修订,所以你需要使用下面的代码片段。

我计划在下个月发布此功能。

add_filter( 'rest_prepare_revision', function( $response, $post ) {
    $data = $response->get_data();

    $data['acf'] = get_fields( $post->ID );

    return rest_ensure_response( $data );
}, 10, 2 );

端点:

http://localhost/wp-json/wp/v2/posts/{post_id}/revisions

http://localhost/wp-json/wp/v2/posts/{post_id}/revisions/{revision_id}

参考:

https://github.com/airesvsg/acf-to-rest-api/issues/190#issuecomment-345854148

https://developer.wordpress.org/rest-api/reference/post-revisions/

谢谢

于 2017-11-27T15:25:55.800 回答