WordPress REST API 定制化输出文章信息及自定义字段信息

WordPress REST API 定制化输出文章信息及自定义字段信息,第1张

概述WordPress需要提供了REST API,但是有时候并不能完全满足我们的需求,比如他会把文章里好多我们用不到的数据显示出来,同时还不能显示自定义字段的数据,...

wordpress需要提供了REST API,但是有时候并不能完全满足我们的需求,比如他会把文章里好多我们用不到的数据显示出来,同时还不能显示自定义字段的数据,那么这个时候我们就需要对wordpress REST API的输出数据做定制化的修改和调整。文章数据(posts)禁止某些字段显示默认的,当请求类似 your-site.com/wp-Json/wp/v2/posts?per_page=5&page=1 的接口来获取文章列表,展示的不少字段对一般人来说是没有必要。

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

// https://devework.com/wordpress-rest-API-dynamic-output.HTML

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://devework.com/wordpress-rest-API-dynamic-output.HTML

register_rest_fIEld( 'post','Metadata',array(

'get_callback' => function ( $data ) {

return get_post_meta( $data['ID'],'','' );

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

// https://devework.com/wordpress-rest-API-dynamic-output.HTML

function DW_rest_prepare_post( $data,$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',3 );上面的代码展示的是如何输出thumb 这个 post Meta 字段,请按需使用。

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

# https://devework.com/wordpress-rest-API-dynamic-output.HTML

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 状态码。这在一定程度上起到了保护作用。

遵循类似的思路,也可以通过自定义http 请求头的方式,如:

if ($http_x_access_token != 'your-token'){

return 403;

}以上主要内容引自:https://devework.com/wordpress-rest-API-dynamic-output.HTML

总结

以上是内存溢出为你收集整理的WordPress REST API 定制化输出文章信息及自定义字段信息全部内容,希望文章能够帮你解决WordPress REST API 定制化输出文章信息及自定义字段信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/998188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存