0

WordPress REST APIと高度なカスタムフィールドACFを使用しているサイトがあります。 ACフィールドをREST APIに公開するには、プラグインACF TO REST APIを使用します。ここまでは順調ですね。高度なカスタムフィールド(ACF)リビジョンを取得

しかし、今、私はWordpressバックエンド内の«Preview Changes»ボタンに通常の機能を追加したいと思います。私はボタンの機能を変更することができました。私はそれを押すと、ポストを新しいリビジョンに自動的に保存することが分かりました。プレビューにアクセスして表示するには、最新のリビジョンのデータを取得する必要があります。私はそれを行うことができますが、REST APIは、タイトル、コンテンツ、抜粋などのコアワードプレスのものだけを公開しますが、その投稿に属するACFは公開しません。

(変更された)ACFフィールドの内容を含む投稿の最新リビジョンを取得するには、Wordpress REST APIルートにアクセスしたいと思います。

誰かが正確にそれをするカスタムルートを書く方法を教えてもらえますか?この機能をACF TO REST APIプラグインに追加しようとしましたが、これまでのところ成功しませんでした。

は、私は私がポスト(またはページ)のidが含まREST APIのルート呼び出しがあると思う、それは私がすでにここに来る、そのページのリビジョン(>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それを呼び出す通常の投稿のようになるようだと、通常のポストIDを持っています上記の例では461

次に、すべてのpost_metaエントリを'post_id' = RevisionIDで照会し、結果を最新のリビジョンの結果とマージする必要があります。

誰かがそれを確認できますか?

また、私はWordpress REST APIのクエリを設定して、必要な結果をフィルタリングする方法について非常にうれしく思います。

ありがとうございました。

乾杯

+0

は、これまでのところ、私は私自身のWP_REST_Controller(その1を拡張)を書きました。私はポスト(uriのパラメータとして渡されたid)> 'wp_get_post_revisions'の最新リビジョン(-id)を手作業で取得します。次に、このリビジョン(私のプレビューバージョン)に関連付けられたカスタムフィールドを取得するために 'get_post_meta($ id_of_revision)'を使用します。 この種のものは私に正しい結果をもたらしますが、非常に乱雑です。 'type = image'のACFのようなネストされた情報も利用できません。プラグインACF TO REST APIは、何らかの形でこれらのフィールドをきちんとしたjsonにすることを管理しますが、私はそうしません。誰かが私を助けてくれるかもしれない。 – Merc

答えて

1

この時点でAPIを休ませる私のプラグインACFは、リビジョンをサポートしていませんので、あなたは以下のことスニペットを使用する必要があります。

この機能は翌月にリリースする予定です。

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/

おかげ

関連する問題