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

ユーザーが新しい画像を選択するときに(jQueryのfiles change()関数)、非表示のテキストフィールドを使用するのではなく、非表示の入力フィールドを使用する必要があると思います。非表示のフィールドの値を新しいURLに設定し、古いものを置き換えます、次に非表示フィールド名を投稿します。

おそらく役立つように編集してください:

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

メモリから入力しますが、それが基本的な考え方です。

于 2012-10-15T16:31:47.907 に答える