Как вернуть постоянную ссылку в WordPress REST API с помощью ACF? - PullRequest
0 голосов
/ 30 апреля 2019

Я использую ACF + плагин ACF для REST API.

У меня есть страница глобальных опций с полем, которое ссылается на сообщение (это поле отношения ACF для сообщения).

Если перейти к: /wp-json/acf/v3/options/options

Ответ выглядит следующим образом:

{
  "acf": {
    "sticker_button": {
      "title": "Come & visit",
      "post_object": {
        "ID": 311,
        "post_author": "2",
        "post_date": "2019-04-30 18:39:50",
        "post_date_gmt": "2019-04-30 17:39:50",
        "post_content": "",
        "post_title": "test",
        "post_excerpt": "",
        "post_status": "publish",
        "comment_status": "closed",
        "ping_status": "closed",
        "post_password": "",
        "post_name": "test",
        "to_ping": "",
        "pinged": "",
        "post_modified": "2019-04-30 18:39:50",
        "post_modified_gmt": "2019-04-30 17:39:50",
        "post_content_filtered": "",
        "post_parent": 97,
        "guid": "https://example.dev.env.example.com/?page_id=311",
        "menu_order": 0,
        "post_type": "page",
        "post_mime_type": "",
        "comment_count": "0",
        "filter": "raw"
      }
    }
  }
}

Поскольку я использую SPA для использования этих данных, я не хочу делать еще один запрос APIпросто чтобы получить эти сообщения постоянная ссылка / ссылка.

Есть ли способ отобразить постоянную ссылку в ответе на указанное сообщение вместе с post_object?

Просто используя post_name для сборкиодной ссылки вручную недостаточно, поскольку она может быть подстраницей другой.Мне нужна фактическая постоянная ссылка во время выполнения, и иерархия страниц не влияет на post_name.

Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 30 апреля 2019

Похоже, что плагин ACF to Rest имеет список фильтров WP, к которым можно подключиться для различных типов ответов WP REST Routes (см. здесь ).

Мое предложение будет использовать фильтр acf/rest_api/{type}/prepare_item, если вы хотите изменить ответ для отдельного элемента ответа ИЛИ фильтр acf/rest_api/{type}/get_fields для всех объектов, где type равно option - согласно маршруту REST в вашем вопросе.

Вот пример кода с использованием acf/rest_api/{type}/get_fields (найдено здесь ):

function options_fields_filter( $data, $request ) {
   // here's where you'd mutate `$data` 

   return $data;
}

add_filter( 'acf/rest_api/option/get_fields', 'option_fields_filter', 10, 2 );

Надеюсь, это поможет. Если вы хотите задействовать больше указанных фильтров для других «типов», таких как определенные типы записей, более подробно изучите контроллеры REST API, расположенные здесь .

...