Получить расширенные версии пользовательских полей (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/
Спасибо