微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义WordPress媒体上传rest api

我们知道wordpress拥有rest api功能,我们可以使用rest api从其他平台对我们的wordpress进行相关的增删改查,那么今天我们就分享给大家一个如何注册一个可以像wordpress上传媒体的rest api接口。

首先,我们使用register_rest_route()来注册这个rest api。我们将以下代码放在我们主题的functions.PHP文件中。

//注册媒体上传端点

register_rest_route(

'wp/v2',

'/upload_file',

array(

'methods' => 'POST',

'callback' => 'mx_handle_file_upload',

'permission_callback' => '__return_true',

)

);

我们可以看到,以上代码中,我们指定了一个回调函数函数名称为:mx_handle_file_upload,那么我们下面的代码就是这个回调函数的具体内容,也是我们的核心代码,我们同样需要将以下代码放到您的主题中的functions.PHP文件中。

// wordpress REST API 端点处理上传文件

function mx_handle_file_upload() {

if (!empty($_FILES['file'])) {

$file = $_FILES['file'];

//在前端使用时,需要引入以下3个文件

require_once( ABSPATH . 'wp-admin/includes/image.PHP' );

require_once( ABSPATH . 'wp-admin/includes/file.PHP' );

require_once( ABSPATH . 'wp-admin/includes/media.PHP' );

$attachment_id = media_handle_upload('file',0);

if (is_wp_error($attachment_id)) {

// 处理上传错误

$response = array(

'code' => 0,

'error_type' => 'upload_error',

'msg' => wp_strip_all_tags($attachment_id->get_error_message()),

);

} else {

// 处理上传成功

$image_url = wp_get_attachment_image_url($attachment_id,'full');

$response = array(

'code' => 1,

'msg' => 'success',

'data' => array(

'attachment_id' => $attachment_id,

'image_url' => $image_url,

)

);

}

} else {

// 如果没有上传文件,则返回错误信息

$response = array(

'code' => 0,

'error_type' => 'no_img_uploaded',

'msg' => '没有上传图片',

);

}

// 发送JSON响应

wp_send_json($response);

//注意,有时使用wp_send_json返回的数据结构可能不是app端想要的结构,那么你可以使用以下方法来替换wp_send_json();

//// 清理缓冲区

//ob_clean();

//// 设置JSON响应头

//header('Content-Type: application/json');

//echo json_encode($response,JSON_UnesCAPED_SLASHES | JSON_UnesCAPED_UNICODE);

//die();

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐