函数
media_handle_upload( $file_id, $post_id, $post_data, $overrides );
描述
在程序开发中,处理上传文件是一个麻烦事,在 WordPress 中,不是这样的,WordPress 为我们提供了处理上传图片的函数:media_handle_upload
,我们只需要把参数传给这个函数,上传的图片或文件就自动保存在服务器上并插入媒体库中了。
参数
$file_id
: (string) (必须的)PHP $_FILES
超级变量的索引。默认:None$post_id
: (int) (必需的) ,需要插入附件的文章 ID,如果不想把附件插入到文章里,设为 0 即可。默认: None$post_data
: (array) (可选) 允许修改附件的一些信息。默认: array()$overrides
: (array) (optional) 允许覆盖wp_handle_upload()
的表现。默认:array( ‘test_form’ => false )
返回值
(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检查失败时的提示信息 }
本文由 猫斯基 原创发布。
著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://www.maosiji.com/2874.html