Intereting Posts
Вернуться все теги из результатов поиска Обычное правило переписывания архива пользовательского типа Попытка получить дочерние категории для отображения, проблемы с помощью цикла foreach WordPress Сообщение # из # фильтруется по категориям slug Пользовательская страница блога Где люди регистрируются на моем сайте? WP 4.4. реагирующие нагрузки нормального изображения после загрузки чувствительного изображения Обновить цикл пользовательских сообщений (div) после публикации новой публикации WordPress admin для персонализированного сообщения, скрыть / свернуть основные поля «title» и «description» Как создать различные настраиваемые макеты сообщений? Добавить дочерние страницы родителя в navbar PHP Невозможно остановить wpautop от испортить мой подключаемый файл Добавить стили с помощью wp_add_inline_style, только если существуют модификации wp_add_inline_style Получите меньший размер изображения, get_the_post_thumbnail Масштабирование пользовательской темы без детей

Устранение данных в пользовательском почтовом типе 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' );