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

WordPress需要提供了REST API,但是有时候并不能完全满足我们的需求,比如他会把文章里好多我们用不到的数据显示出来,同时还不能显示自定义字段的数据,那么这个时候我们就需要对WordPress REST API的输出数据做定制化的修改和调整。

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

 

// 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, $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 字段,请按需使用。

最后,铬元素提示,大家增加自定义字段是可以的,但不太建议删减,因为有些插件是使用rest api的,如果随意删减,可能到时候会出错,找起来可就麻烦了。

常见问题
所有的素材与插件都可以用吗?
本站所有的素材与插件(包括免费的),都是本工作室用过的,测试过的,或者二开修改过的,理论上来说没有什么bug,但不保证在所有环境下都可以完美运行。
收费素材与免费素材怎么定义的
本站收费的素材,也是及其便宜的,其实就是收个打赏钱,是工作室对这些插件的测试,整理,修复,优化的辛苦钱,并非开发插件的费用,原创插件或者模版收费稍贵一些。
出现问题了怎么办?
由于收费非常低,大部分都不超10元,所以并不提供售后服务,但您如果需要,可以联系我付费咨询,费用为50元/次/小时。如果是原创模版或者插件,可以免费为您指导。
原文链接:https://www.52gys.cn/3822.html,转载请注明出处。
0

评论0

没有账号?注册  忘记密码?