php – 从WordPress API中取消数据(wp-json)
发布时间:2020-12-13 13:57:17 所属栏目:PHP教程 来源:网络整理
导读:我可以从WordPress API返回的json中取消设置(从正常帖子中删除细节).我实际上使用下面的例子: https://css-tricks.com/using-the-wp-api-to-fetch-posts/ 我遇到麻烦和无法弄清楚的是如何更改这一点,从而从“自定义帖子类型”中取消数据 思考? function qo
我可以从WordPress API返回的json中取消设置(从正常帖子中删除细节).我实际上使用下面的例子:
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,$context ) { 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'] ); return $data; } add_filter( 'json_prepare_project','projectPost_remove_extra_data',3 );
对于wp-api v1.x,您需要扩展WP_JSON_CustomPostType.页面文件中有一个例子(class-wp-json-pages.php)
<?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 ),'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( 'status' => 404 ) ); } return $this->edit_post( $post['ID'],$_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( '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,$context ); } } 将“页面”替换为“MyCustomPostTypes”,页面替换为“mycustomposttype”.只要小心不要重命名也使用术语页面的内部WordPress代码 注意:最好将其添加为插件,而不是更改JSON-WP-API插件 /** * Plugin Name: MyCustom JSON App API * Description: MyCustomPost handler for the JSON API * Dependency: This plugin requires JSON-WP-API Plugin!!!! * Author: * Author URI: * Version: * Plugin URI: */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |