前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress REST API 定制化输出

WordPress REST API 定制化输出

作者头像
Jeff
发布2018-01-22 11:04:46
2K0
发布2018-01-22 11:04:46
举报
文章被收录于专栏:DeveWorkDeveWork

WordPress 自4.7 版本后与时俱进推出了REST API,如此一来想象空间又扩展了许多,如今WordPress 可以完全作为后端数据驱动了。本文通过几个例子展示如何定制化输出WordPress REST API 的相关数据。

文章数据(posts)禁止某些字段显示

默认的,当请求类似 your-site.com/wp-json/wp/v2/posts?per_page=5&page=1 的接口来获取文章列表,展示的不少字段对一般人来说是没有必要。

秉承“如无必要,勿增实体”的原则,减少请求时候的数据量,可以通过下面的代码移除:

| // https://cloud.tencent.com/developer/article/1025702 function dw_rest_prepare_post( $data, $post, $request ) {   $_data = $data->data;   $params = $request->get_params();   // if ( ! isset( $params'id' ) ) {   unset( $_data'excerpt' );   unset( $_data'author' );   unset( $_data'featured_media' );   unset( $_data'format' );   unset( $_data'ping_status' );   unset( $_data'comment_status' );   unset( $_data'sticky' );   unset( $_data'template' );   // }   $data->data = $_data;   return $data;   }   add_filter( 'rest_prepare_post', 'dw_rest_prepare_post', 10, 3 ); |

|:----|

文章数据(posts)中输出 post meta 所有字段

可能考虑到数据隐私,文章数据(posts)默认并不显示post meta的相关字段,如果你需要输出对应文章下所有 post meta 字段,可以用下面的代码启用:

| // https://cloud.tencent.com/developer/article/1025702 register_rest_field( 'post', 'metadata', array(   'get_callback' => function ( $data ) {   return get_post_meta( $data'id', '', '' );   }, )); |

|:----|

输出 post meta 特定字段

接上,如果你在REST API 中仅仅想输出 post meta 特定字段而非全部,则通过类似下面代码:

| // https://cloud.tencent.com/developer/article/1025702 function dw_rest_prepare_post( $data, $post, $request ) {   $_data = $data->data;   $params = $request->get_params();   $thumb = get_post_meta( $post->ID, 'thumb' );   if($thumb){   $_data'thumb_image' = $thumb;   }   $data->data = $_data;   return $data;   }   add_filter( 'rest_prepare_post', 'dw_rest_prepare_post', 10, 3 ); |

|:----|

上面的代码展示的是如何输出thumb 这个 post meta 字段,请按需使用。

借助 Nginx 控制 /wp-json 的访问

这个倒与WordPress 本身无关了,your-site.com/wp-json 的路由默认是所有人皆可访问。如果你基于服务器负载,或安全等方面考虑选择性输出,可以借助 Nginx 控制访问。先看下面的例子:

| # https://cloud.tencent.com/developer/article/1025702 location /wp-json { if ($http_user_agent !~ '(iPhone|Android)'){ return 403; } try_files $uri $uri/ /index.php?$args; } |

|:----|

如果你熟悉Nginx 语法,就知道上面的代码实现了:除了iOS 跟Android 设备(通过判断请求头的UA 信息),其它访问 /wp-json 的路径均返回403 状态码。这在一定程度上起到了保护作用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/05/13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章数据(posts)禁止某些字段显示
  • 文章数据(posts)中输出 post meta 所有字段
  • 输出 post meta 特定字段
  • 借助 Nginx 控制 /wp-json 的访问
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档