如何阻止输入图像字段在 php 中更新时丢失其值


How to stop an input image field from losing its value on update in php?

我有一个我认为是一个简单的问题,但是,我被难住了。我正在为插件的 Wordpress 中的自定义类型处理自定义字段列表。我希望根据链接的另一个帖子拥有动态数量的自定义字段(这可能是说明问题的一种复杂方式)。

它似乎适用于我在页面上的输入类型,但是对于输入文件类型,它是只读的,每次我单击以更新以前存储的值时都会丢失。我理解为什么会发生这种情况,当页面在保存值后加载时,没有值。我在标签中显示图像。当我将不同的图像添加到不同的自定义字段时,原始图像现在不会向 php 脚本发送任何数据。因此,原始值将丢失。

以下是相关的 php:

// Attribute Images...
$save_img_values = array();
foreach ($_FILES['paired_att_img']['name'] as $key => $att_img) {
    $file_name = $_FILES['paired_att_img']['name'][$key];
    $file_tmp = $_FILES['paired_att_img']['tmp_name'][$key];
    $upload = wp_upload_bits($file_name, null, file_get_contents($file_tmp));
    if (isset($upload['error']) && $upload['error'] != false) {
        continue;
    } else {
        $save_img_values[$key] = $upload['url'];
    } 
}
update_post_meta($post->ID, 'paired_atts_img', $save_img_values);

请不要对可怕的代码发表评论,它需要重构,但我想先让它工作。

所以实际上我找到了答案!请随时让我知道为什么如果不是这样,这不是一个好主意,但本质上我只是添加了这个:

$custom_imgs = get_post_meta($post->ID, 'paired_atts_img', false);
if (count($custom_imgs) > 0)
    $custom_img = $custom_imgs[0];
else
    $custom_img = array();
$save_img_values = $custom_img;

然后其余的像以前一样。因此,从本质上讲,我们在保存而不是加载时检索值。也许 asp.net 的时间太长了,阻止了我看到如此明显的东西。