Intereting Posts
Для каждого +1 WordPress Loop post_password_required () не распознает набор файлов cookie с правильным паролем Изменить тип сообщения в зависимости от короткого кода Добавить возможности загрузки файлов, необходимые для пользовательской роли для не-сообщений использование .htaccess только для защиты WordPress без плагинов Сортировка управления виджетами Как WP_Query подключен к WP_Post в Loop? Вставить плагин в пользовательский шаблон страницы Как изменить количество сообщений в цепочке wordpress? WordPress Local to Live и отсутствующие виджеты! WordPress Theme Bootstrap автоматически созданный встроенный css на элементе сетки Найдите «Дети страницы», затем «Echo it» как «Маркированный список ссылок» (меню) Доступ к $ post global на странице архива пользовательского типа сообщений Невозможно просмотреть черновики после обновления до 4.0! WP_Query с rewind_posts создает дубликаты заголовков

Устранение данных в пользовательском почтовом типе WordPress API (wp-json)

Я уже могу отключить (удалить специфику из обычных сообщений) в json, возвращаемом из WordPress API. В этом примере я использую следующее ниже: https://css-tricks.com/using-the-wp-api-to-fetch-posts/

У меня возникают проблемы и не могу понять, как это изменить, чтобы он не загружал данные из пользовательского типа сообщения

Мысли?

function qod_remove_extra_data( $data, $post, $context ) { // We only want to modify the 'view' context, for reading posts if ( $context !== 'view' || is_wp_error( $data ) ) { return $data; } // Here, we unset any data we don't want to see on the front end: unset( $data['author'] ); unset( $data['status'] ); unset( $data['featured_image'] ); //etc etc return $data; } add_filter( 'json_prepare_post', 'qod_remove_extra_data', 12, 3 ); 

новый пример с пользовательским типом сообщения **

 function projectPost_remove_extra_data( $data, $post, $context ) { // We only want to modify the 'view' context, for reading posts if ( $context !== 'view' || is_wp_error( $data ) ) { return $data; } // Here, we unset any data we don't want to see on the front end: unset( $data['author'] ); unset( $data['status'] ); return $data; } add_filter( 'json_prepare_project', 'projectPost_remove_extra_data', 12, 3 ); 

Solutions Collecting From Web of "Устранение данных в пользовательском почтовом типе WordPress API (wp-json)"

Если возможно, только примеры, показанные в Интернете:

 qod_remove_extra_data function ($ data, $ post, $ context) { // We only want to modify the 'view' context, for reading posts if ($ context! == 'view' || is_wp_error ($ data)) { return $ data; } // Here, we unset any data we do not want to see on the front end: unset ($data ['author']); unset ($data ['status']); // Continue unsetting whatever other fields you want return $ data; } add_filter ('json_prepare_post' 'qod remove extra_data', 12, 3); 

и право:

 qod_remove_extra_data function ($ data, $ post, $ context) { // We only want to modify the 'view' context, for reading posts if ($ context! == 'view' || is_wp_error ($ data)) { unset ( $data->data ['excerpt']); //Example unset ($data->data ['content']); //Example unset ($data->data ['name field to remove']) //or unset ($data->data ['name field to remove'] ['name subfield if you only want to delete the sub-field of field' ]) return $data; } } add_filter ('rest_prepare_post', 'qod_remove_extra_data', 12, 3); 

ВАЖНО: Является ли:

 add_filter ('**rest_prepare_post**', 'qod_remove_extra_data', 12, 3); 

Не:

 add_filter ('**json_prepare_post**' 'qod remove extra_data', 12, 3); //WRONG (No underscores) 

Если пользовательский тип сообщения:

 add_filter ('**rest_prepare_{$post_type}**', 'qod_remove_extra_data', 12, 3); 

ПРИМЕР: Название post type = product;

  add_filter ('**rest_prepare_product**', 'qod_remove_extra_data', 12, 3); 

С помощью этого кода можно удалить поля, которые вы хотите использовать JSON. Используя rest_prepare} _ {$ post_type, вы решили, что вы удалили все поля post_type, тем самым затронув только ваш post_type и не все.

Посмотрите код wp-api для страниц (которые являются настраиваемыми типами сообщений).

Вы можете изменить код, сменив страницы на любой тип вашего сообщения (просто будьте осторожны с поиском и заменой для всех «страниц», поскольку некоторые из них – вызовы или фильтры WordPress)

 <?php /** * Page post type handlers * * @package WordPress * @subpackage JSON API */ /** * Page post type handlers * * This class serves as a small addition on top of the basic post handlers to * add small functionality on top of the existing API. * * In addition, this class serves as a sample implementation of building on top * of the existing APIs for custom post types. * * @package WordPress * @subpackage JSON API */ class WP_JSON_Pages extends WP_JSON_CustomPostType { /** * Base route * * @var string */ protected $base = '/pages'; /** * Post type * * @var string */ protected $type = 'page'; /** * Register the page-related routes * * @param array $routes Existing routes * @return array Modified routes */ public function register_routes( $routes ) { $routes = parent::register_routes( $routes ); $routes = parent::register_revision_routes( $routes ); $routes = parent::register_comment_routes( $routes ); // Add post-by-path routes $routes[ $this->base . '/(?P<path>.+)'] = array( array( array( $this, 'get_post_by_path' ), WP_JSON_Server::READABLE ), array( array( $this, 'edit_post_by_path' ), WP_JSON_Server::EDITABLE | WP_JSON_Server::ACCEPT_JSON ), array( array( $this, 'delete_post_by_path' ), WP_JSON_Server::DELETABLE ), ); return $routes; } /** * Retrieve a page by path name * * @param string $path * @param string $context * * @return array|WP_Error */ public function get_post_by_path( $path, $context = 'view' ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->get_post( $post['ID'], $context ); } /** * Edit a page by path name * * @param $path * @param $data * @param array $_headers * * @return true|WP_Error */ public function edit_post_by_path( $path, $data, $_headers = array() ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->edit_post( $post['ID'], $data, $_headers ); } /** * Delete a page by path name * * @param $path * @param bool $force * * @return true|WP_Error */ public function delete_post_by_path( $path, $force = false ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->delete_post( $post['ID'], $force ); } /** * Prepare post data * * @param array $post The unprepared post data * @param string $context The context for the prepared post. (view|view-revision|edit|embed|single-parent) * @return array The prepared post data */ protected function prepare_post( $post, $context = 'view' ) { $_post = parent::prepare_post( $post, $context ); // Override entity meta keys with the correct links $_post['meta']['links']['self'] = json_url( $this->base . '/' . get_page_uri( $post['ID'] ) ); if ( ! empty( $post['post_parent'] ) ) { $_post['meta']['links']['up'] = json_url( $this->base . '/' . get_page_uri( (int) $post['post_parent'] ) ); } return apply_filters( 'json_prepare_page', $_post, $post, $context ); } } с <?php /** * Page post type handlers * * @package WordPress * @subpackage JSON API */ /** * Page post type handlers * * This class serves as a small addition on top of the basic post handlers to * add small functionality on top of the existing API. * * In addition, this class serves as a sample implementation of building on top * of the existing APIs for custom post types. * * @package WordPress * @subpackage JSON API */ class WP_JSON_Pages extends WP_JSON_CustomPostType { /** * Base route * * @var string */ protected $base = '/pages'; /** * Post type * * @var string */ protected $type = 'page'; /** * Register the page-related routes * * @param array $routes Existing routes * @return array Modified routes */ public function register_routes( $routes ) { $routes = parent::register_routes( $routes ); $routes = parent::register_revision_routes( $routes ); $routes = parent::register_comment_routes( $routes ); // Add post-by-path routes $routes[ $this->base . '/(?P<path>.+)'] = array( array( array( $this, 'get_post_by_path' ), WP_JSON_Server::READABLE ), array( array( $this, 'edit_post_by_path' ), WP_JSON_Server::EDITABLE | WP_JSON_Server::ACCEPT_JSON ), array( array( $this, 'delete_post_by_path' ), WP_JSON_Server::DELETABLE ), ); return $routes; } /** * Retrieve a page by path name * * @param string $path * @param string $context * * @return array|WP_Error */ public function get_post_by_path( $path, $context = 'view' ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->get_post( $post['ID'], $context ); } /** * Edit a page by path name * * @param $path * @param $data * @param array $_headers * * @return true|WP_Error */ public function edit_post_by_path( $path, $data, $_headers = array() ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->edit_post( $post['ID'], $data, $_headers ); } /** * Delete a page by path name * * @param $path * @param bool $force * * @return true|WP_Error */ public function delete_post_by_path( $path, $force = false ) { $post = get_page_by_path( $path, ARRAY_A ); if ( empty( $post ) ) { return new WP_Error( 'json_post_invalid_id', __( 'Invalid post ID.' ), array( 'status' => 404 ) ); } return $this->delete_post( $post['ID'], $force ); } /** * Prepare post data * * @param array $post The unprepared post data * @param string $context The context for the prepared post. (view|view-revision|edit|embed|single-parent) * @return array The prepared post data */ protected function prepare_post( $post, $context = 'view' ) { $_post = parent::prepare_post( $post, $context ); // Override entity meta keys with the correct links $_post['meta']['links']['self'] = json_url( $this->base . '/' . get_page_uri( $post['ID'] ) ); if ( ! empty( $post['post_parent'] ) ) { $_post['meta']['links']['up'] = json_url( $this->base . '/' . get_page_uri( (int) $post['post_parent'] ) ); } return apply_filters( 'json_prepare_page', $_post, $post, $context ); } } 

Поместите свой собственный код в edit или filter и т. Д., И прочь вы идете!

ps – не забудьте превратить его в правильный плагин! Вы можете добавить как новый плагин и лучше управлять этим способом, используя:

 <?php /** * Plugin Name: My JSON App API * Description: My Route and Endpoint handler for the JSON API * Dependency: This plugin requires JSON BasicKey Authentication Plugin!!!! * Author: Blah Blah Blah, plus much original code from the WordPress API Team * Author URI: https://www.example.com * Version: 1.2 * Plugin URI: https://www.example.com */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if (!defined("MY_JSON_API_VERSION")) { define ("MY_JSON_API_VERSION", "1.2") ; } function my_json_api_init() { global $my_json_api_mobile_users; $my_json_api_mobile_users = new my_JSON_API_MobileUsers(); add_filter( 'json_endpoints', array( $my_json_api_mobile_users, 'register_routes' ) ); } add_action( 'wp_json_server_before_serve', 'my_json_api_init' );