0

我正在使用表单字段让用户编辑帖子并上传个人资料图片。

一旦他们上传了个人资料图片,就会将一个 URL 传递给一个名为“logo_header”的隐藏自定义文本字段。我在 PHP 模板中读取了这个 URL,并使用它来显示图像,如下所示。

<?php $logo = get_post_meta($post->ID, 'logo_header', true); ?>

<div class="profileLogo"><img src="<?php echo $logo; ?>" /></div>

我的问题是当用户决定更新他们的照片(基本上是更改照片)时,新 URL 只是添加到当前 URL 的末尾,我猜这会创建一个数组。所以它会像

http://example.com/myprofile.jpg , http://example.com/myprofile2.jpg

显然图像 src 不能使用数组,它需要 1 个 URL。

我使用重力表单上传文件按钮来编辑帖子并上传图像。没有删除已经存在的当前图像的选项(这是另一个问题:(),所以用户只有一个上传按钮。

我的问题是

如何始终选择添加到“logo_header”字段的最后一个 URL?

4

3 回答 3

2

尝试$logo = array_pop(get_post_meta($post->ID, 'logo_header', false));

使用 false 参数,您将获得所有元字段的数组。我们只能假设它们会以正确的顺序插入和返回,因此array_pop()将拉出列表中的最后一个。

编辑- 对于您并不总是有多个徽标的情况,您应该使用这个:

$logo = get_post_meta($post->ID, 'logo_header', false);
$logo = is_array($logo) ? array_pop($logo) : $logo;
于 2012-10-15T16:30:52.487 回答
1
$logo = get_post_meta($post->ID, 'logo_header', true);

$logoImgSrc = is_array($logo) ? end($logo) : $logo;

<div class="profileLogo">
    <img src="<?php echo $logoImgSrc ; ?>" />
</div>
于 2012-10-15T16:58:50.140 回答
0

我认为你不应该使用隐藏的文本字段,而不是隐藏的输入字段,当用户选择新图像时(文件 change() 函数,在 jQuery 中)将隐藏字段值设置为新的 url,替换旧的,然后发布隐藏字段名称。

编辑可能有帮助:

$("#browse_box").change(function() {
    $("#hidden_field").val($(this).val());
});

从记忆中打字,但这是基本的想法。

于 2012-10-15T16:31:47.907 回答