在程序开发中,处理上传文件是一个麻烦事,在 WordPress中,不是这样的,WordPress为我们提供了处理上传图片的函数:media_handle_upload
,我们只需要把参数传给这个函数,上传的图片或文件就自动保存在服务器上并插入媒体库中了。下面我们来看以下这个函数怎么用的。
media_handle_upload参数
参数 | 类型 | 必要性 | 默认值 | 描述 |
---|---|---|---|---|
$file_id | string | 必需 | – | PHP $_FILES 超级变量的索引 |
$post_id | int | 可选 | 0 | 图片关联到的文章 ID |
$post_data | array | 可选 | null | 允许修改附件的一些信息 |
$overrides | array | 可选 | [] | 允许覆盖 wp_handle_upload() 的表现 |
返回值:
(int|WP_Error)
如果成功,返回附件 ID,如果失败,返回一个 WP_Error 实例
示例:
前端表单
<form id="featured_upload" method="post" action="#" enctype="multipart/form-data">
<input type="file" name="my_image_upload" id="my_image_upload" multiple="false" />
<input type="hidden" name="post_id" id="post_id" value="55" />
<?php wp_nonce_field( 'my_image_upload', 'my_image_upload_nonce' ); ?>
<input id="submit_my_image_upload" name="submit_my_image_upload" type="submit" value="Upload" />
</form>
处理上传的文件
// 检查 nonce 和用户权限
if (
isset( $_POST['my_image_upload_nonce'], $_POST['post_id'] )
&& wp_verify_nonce( $_POST['my_image_upload_nonce'], 'my_image_upload' )
&& current_user_can( 'edit_post', $_POST['post_id'] )
) {
// 如果通过检查,安全性是没问题的
// 在前端使用时,需要引入以下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' );
// 让WordPress处理上传的文件
// 注意, 'my_image_upload' 是上面表单里的文件字段的name
$attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );
if ( is_wp_error( $attachment_id ) ) {
// 上传出错时的处理
} else {
// 上传成功后的处理
}
} else {
// nounxe检查失败时的提示信息
}
1 thoughts on “WordPress 处理图片和文件上传函数—— media_handle_upload”
强!!!