Intereting Posts
Как изменить текст в панели администратора? добавить ссылки на список условий публикации Удалить действие из плагина штрих-кода woocommerce Как реализовать функциональность WP_List_Table для настраиваемых плагинов (или любую замену для плагина wp_list_table) для массового действия Сколько фильтров / активных крючков здорово? Как создать поле автора так и добавить после каждого сообщения? Великие блоги ресурсов сайта / учебник для разработчиков WordPress? Вызов функции-члена add_rule () для не-объекта Установите опцию, чтобы показывать слайдер в пост-WP Показывать пользовательскую таксономию не в подменю WordPress 3.6, searchform.php проблемы Почтовый цикл для всех таксономических условий Почему я не могу добавить собственный тип сообщения в пользовательскую таксономию? Как установить параметры по умолчанию для существующего плагина в новой пользовательской установке WP MU Архивный файл regEx wp

Ответ редактора WP REST API

Я использую «WP REST API Version 2.0-beta12» по адресу http://wp-api.org/, чтобы использовать REST API, доступный через HTTP данных моего сайта в простом формате JSON. Я отформатировал свой вывод json для ограничения ответа поле, в то время как список post API – http://example.com/wp-json/wp/v2/posts, используя rest_prepare_post следующим образом,

function api_remove_extra_data( $data, $post, $context ) { // We only want to modify the 'view' context, for reading posts if ( $context !== 'view' || is_wp_error( $data ) ) { // Here, we unset any data we don't want to see on the front end: unset ( $data->data ['link']); unset ( $data->data ['date_gmt']); unset ( $data->data ['modified']); unset ( $data->data ['modified_gmt']); unset ( $data->data ['type']); unset ( $data->data ['content']); unset ( $data->data ['excerpt']); unset ( $data->data ['author']); // continue unsetting whatever other fields you want return $data; } } add_filter( 'rest_prepare_post', 'api_remove_extra_data', 12, 3 ); 

Он отлично работает. Но мне нужны полные данные в одном вызове API, например,

http://example.com/wp-json/wp/v2/posts/1077

 WordPress version: 4.4.2 Plugin Version : WP REST API 2.0-beta12 

Используя вышеприведенный фильтр, оба списка сообщений API и просмотр одного сообщения API возвращают только ограниченный ответ. Как я могу получить все данные post в post single ( http://example.com/wp-json/wp/v2/posts/1077 ) API, сохраняя ограниченный ответ в API списков сообщений?

Solutions Collecting From Web of "Ответ редактора WP REST API"

Поскольку вы фильтруете фильтр rest_prepare_{post_type} , вы можете ограничить его WP_REST_Posts_Controller::get_items() с rest_{post_type}_query :

 add_filter( 'rest_post_query', function( $args ) { add_filter( 'rest_prepare_post', 'api_remove_extra_data', 12, 3 ); return $args; } ); 

где тип postpost .

Обратите внимание, что в общем случае мы всегда хотим вернуть значение фильтра, и я не следую логике вашего обратного вызова api_remove_extra_data() . Может быть, это реликт версии 1.x?

Так фильтр теперь определен в версии 2:

 /** * Filter the post data for a response. * * The dynamic portion of the hook name, $this->post_type, refers to post_type of the post * being prepared for the response. * * @param WP_REST_Response $response The response object. * @param WP_Post $post Post object. * @param WP_REST_Request $request Request object. */ return apply_filters( "rest_prepare_{$this->post_type}", $response, $post, $request );