WordPress 处理图片和文件上传函数—— media_handle_upload

文 / @WordPress主题

WordPress文件上传函数media_handle_upload的使用方法介绍

我是一本本,接下来介绍一下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检查失败时的提示信息

}
添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。