WordPress 提供了原生的REST API,其访问地址类似于 yourdomain.com/wp-json/wp/v2/posts,该默认接口提供了诸多详细信息,亦可以同时添加参数对数据进行筛选,比如:$queryStr = home_url().'/wp-json/wp/v2/media?_embed&parent=0&media_type='.$media_type;
,因此使用起来较为方便。查看handbook:https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/.
我们可以通过rest_api_init钩子对该接口进行定制:
add_action( 'rest_api_init', 'add_thumbnail_to_JSON' );
function add_thumbnail_to_JSON() {
//Add featured image
register_rest_field(
'attachment', // Where to add the field (Here, blog posts. Could be an array)
'featured_image_src', // Name of new field (You can call this anything)
array(
'get_callback' => 'get_image_src',
'update_callback' => null,
'schema' => null,
)
);
}
function get_image_src( $object, $field_name, $request ) {
$feat_img_array = wp_get_attachment_image_src(
$object['featured_media'], // Image attachment ID
'medium', // Size. Ex. "thumbnail", "large", "full", etc..
true // Whether the image should be treated as an icon.
);
return $feat_img_array[0];
}
我们可以使用类似这样的方式来使用它:/wp-json/wp/v2/media?_fields=featured_image_src,title,link&page=1&&per_page=10
。不过还需要注意,如果你为附件开启了缩略图功能,你应该将$object['featured_media']
替换为get_post_thumbnail_id()
。
除了使用官方的api接口,也可以通过自定义新的接口来定制数据输出方式。