如何在Wordpress中存储用户上传的文件?

时间:2017-09-16 22:08:03

标签: wordpress

我正在构建一个自定义表单(不使用任何插件),它从前端而不是管理区域的用户处获取数据。其中一个表单元素是一个文件字段,用户可以在其中上传多个文件。

在Wordpress中存储用户生成的文件的机制是什么?是否有任何帮助开发人员轻松存储文件的辅助函数?

2 个答案:

答案 0 :(得分:1)

按下上传按钮后,您将使用$ _FILES

获取文件BLOB
$file = $_FILES['filename'];
$filename = $file["tmp_name"]

$upload_file = wp_upload_bits($filename, null, $file);

if (!$upload_file['error']) {
    $wp_filetype = wp_check_filetype($filename, null );
    $attachment = array(
        'post_mime_type' => $wp_filetype['type'],
        'post_parent' => $parent_post_id,
        'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
        'post_content' => '',
        'post_status' => 'inherit'
    );

    //If you want to insert into a post or custom posttype, then make $parent_post_id = 0
    //Otherwise $parent_post_id = id of post/posttype
    $attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $parent_post_id );
    if (!is_wp_error($attachment_id)) {
        $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
        wp_update_attachment_metadata( $attachment_id, $attachment_data );
    //1- get the url
    $url = wp_get_attachment_url( $id );
    //2-get current logged in user ID
    $user_id = get_current_user_id();
    add_user_meta( $user_id, 'uploaded_attachments', $url );
    }else{
        //Failed with message = $attachment_id->get_error_message()

    }
}else{
    //Error : file upload failed 
}

答案 1 :(得分:0)

向用户添加新字段的wp api函数是" add_user_meta"功能。

在我看来,您必须使用函数" add_user_meta"向用户添加新的自定义字段。然后,您应该使用函数" wp_insert_attachment"将上传的文件添加到媒体库中。

阅读表格值。

1 - 使用" wp insert attachment"添加上传的文件。

2 - 使用" add_user_meta"。

功能将字段添加到用户

3 - 将参考ID分配给用户字段。

这些是文件链接: https://codex.wordpress.org/Function_Reference/add_user_meta

https://developer.wordpress.org/plugins/users/working-with-user-metadata

https://codex.wordpress.org/Function_Reference/wp_insert_attachment

此致 编