Получить расширенные версии пользовательских полей (ACF)

У меня есть сайт, использующий WordPress REST API и расширенные настраиваемые поля ACF. Я использую плагин ACF TO REST API для предоставления полей AC для REST API. Все идет нормально.

Но теперь я хочу добавить нормальную функциональность к кнопке "Preview Changes" в бэкэнде WordPress. Мне удалось изменить функциональность кнопок, и я также узнал, что нажатие на них автоматически сохраняет сообщение в новую ревизию. Чтобы получить доступ к предварительному просмотру и отобразить его, я должен получить данные о последней редакции поста. Я могу сделать это, но REST API предоставляет только основные слова WordPress (такие как заголовок, контент, выдержка и т. Д.), Но не ACF, принадлежащие этому посту.

Я хотел бы получить доступ к маршруту WordPress REST API, чтобы получить самую последнюю версию сообщения, включая содержимое (измененных) полей ACF.

Может кто-нибудь помочь мне, как написать собственный маршрут, который делает именно это? Я пытался добавить эту функциональность в плагин ACF TO REST API, но пока что безуспешно.

Я думаю, что я вызвал маршрут 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"
        }]
    }
},

но сейчас я хочу только самую новую ревизию. Последняя ревизия, похоже, похожа на обычное сообщение и имеет нормальный идентификатор сообщения (я называю его RevisionID, который будет 461 в приведенном выше примере).

Затем мне нужно запросить все записи post_meta с 'post_id' = RevisionID и объединить результаты с результатами новейшей ревизии.

Кто-нибудь может это подтвердить?

Я также был бы очень рад с некоторой помощью, как я могу настроить запросы для Wordpress REST API для фильтрации результатов, которые я хочу.

спасибо за любую помощь здесь.

ура

1 ответ

На данный момент мой плагин 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 );

Endpoints:

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

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

Спасибо

Другие вопросы по тегам