5ucms论坛
标题:
WordPress REST API里增加特色图片地址 缩略图
[打印本页]
作者:
admin
时间:
2021-6-3 08:43
标题:
WordPress REST API里增加特色图片地址 缩略图
最近用到的一个小东西,使用wordpress里的REST API时发现在post返回的JSON数据里只返回了特色图片的ID:featured_media,却没有直接返回图片地址,根据ID再去找地址很麻烦,所以干脆直接在接口里增加一个返回值算了。
代码如下:
//API中添加特色图片
function post_fetured_image_json( $data, $post, $context ) {
$featured_image_id = $data->data['featured_media']; // 获取图片ID
$featured_image_url = wp_get_attachment_image_src( $featured_image_id, 'original' ); // 获取图片地址
if( $featured_image_url ) {
$data->data['thumbnailurl'] = $featured_image_url[0];
}
return $data;
}
add_filter( 'rest_prepare_post', 'post_fetured_image_json', 10, 3 );
添加到functions.php就好
复制代码
然后调用文章列表时,使用thumbnailurl字段
作者:
admin
时间:
2021-6-14 08:50
高级版本,同时去掉不需要的字段
function dw_rest_prepare_post( $data, $post, $request ) {
$_data = $data->data;
$params = $request->get_params();
if (has_post_thumbnail($data)) {
//如果有特色缩略图,则输出缩略图地址
$image = wp_get_attachment_image_src( get_post_thumbnail_id($_data['id']), 'full' );
$post_thumbnail_src = $image[0];
} else {
@$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
if (!empty($matches[1][0])) {
global $wpdb;
$att = $wpdb->get_row($wpdb->prepare("SELECT ID,guid FROM $wpdb->posts WHERE guid LIKE '%s'", $matches[1][0]));
if ($att) {
$post_thumbnail_src = $att->guid;
} else {
$post_thumbnail_src = $matches[1][0];
}
} else {
// 默认图片路径
$post_thumbnail_src = null;
}
}
$_data['thumbnailurl'] = $post_thumbnail_src;
// 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 );
复制代码
作者:
admin
时间:
2021-6-14 08:52
在上方代码里有一处 获取图片的函数 wp_get_attachment_image_src
详情:
http://bbs.5ucms.com/thread-888-1-1.html
可以根据实际情况,设置成获取小图 中图 大图
欢迎光临 5ucms论坛 (http://bbs.5ucms.com/)
Powered by Discuz! X3.2