Intereting Posts
get_post_type_archive_link ('post') возвращает архив текущей категории Как очистить заголовок сообщения запятыми Woocommerce показывает крест, продает на странице одного продукта Как исключить короткий код из определенных идентификаторов страниц, если он установлен на глобальный многопользовательский вопрос wordpress Что я должен писать в почтовом действии этой формы переднего конца? Преобразование комментариев в пользовательский тип сообщения Архив почтового формата для пользовательского типа сообщения Родительские отношения родителя внутри WP DB Что генерирует мое мета-описание: description? Как отправить сообщение Via cURL & PHP Как использовать два разных изображения: один в виде миниатюры и один как связанный образ? Удаление некоторых страниц из поиска Admin-ajax.php умирает «0» без функции обработки Nav menus Быстрый просмотр не работает с wp_get_nav_menu_items!

Ответ редактора 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 );