将图像数组保存到Wordpress中的用户?

时间:2019-04-24 07:59:22

标签: wordpress

是否可以将图像数组保存给用户?

我已经创建了一个表单,并且正在保存中。

我已经有了以下代码:

update_user_meta($user->ID, 'gallery', $_POST['gallery_images']);

gallery_images包含形式为输入图像的数组。

我知道这不起作用。是否可以在用户中保存图像数组?如果可能的话,怎么办?

PS。 我正在使用最新版本的wordpress。

2 个答案:

答案 0 :(得分:1)

您可以序列化数据,并在需要时反序列化

update_user_meta($user->ID, 'gallery', serialize($_POST['gallery_images']));

序列化: https://www.php.net/manual/fr/function.serialize.php

答案 1 :(得分:1)

(修订后的答案)

正如在其他答案的注释中所指出的,您可以使用media_handle_upload()上传图像,但是由于该功能仅支持上传,因此对于多个上传,您可以像这样设置一个临时$_FILES项目:

// Load upload-related and other required functions.
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/image.php';
require_once ABSPATH . 'wp-admin/includes/media.php';

$post_id = 0;   // set to the proper post ID, if attaching to a post
$uploaded = []; // attachment IDs

foreach ( $_FILES['gallery_images']['tmp_name'] as $key => $file ) {
    // Set a temporary $_FILES item.
    $_FILES['_tmp_gallery_image'] = [
        'name'     => $_FILES['gallery_images']['name'][ $key ],
        'type'     => $_FILES['gallery_images']['type'][ $key ],
        'size'     => $_FILES['gallery_images']['size'][ $key ],
        'tmp_name' => $file,
        'error'    => $_FILES['gallery_images']['error'][ $key ],
    ];

    // Upload the file/image.
    $att_id = media_handle_upload( '_tmp_gallery_image', $post_id );

    if ( ! is_wp_error( $att_id ) ) {
        $uploaded[] = $att_id;
    }
}
unset( $_FILES['_tmp_gallery_image'] );

// Save the attachment IDs.
$user = wp_get_current_user();
update_user_meta( $user->ID, 'gallery', $uploaded );

我要保存附件ID,但是,当然,要由您决定是否保存图像URL等。

PS:您可以查看原始答案here,以了解如何也可以使用media_handle_sideload()上传图像。 (它很好用,但是除非经过“包装”(函数),否则我们应该只调用media_handle_upload(),除非您要“上传”外部/远程图像/文件。)对不起,这个答案..:)< / p>