media-uploader вставка в пост не вставляется в текстовое поле

Я создал плагин для настраиваемого логотипа, и он работает нормально, но когда я попытался добавить эту функциональность в существующие параметры темы, он не работает.

У меня есть этот код JS.

jQuery(document).ready(function() {
jQuery('#upload_logo_button').click(function() {
formfield = jQuery('#eo_theme_options[logo]').attr('name');
tb_show('', 'media-upload.php?type=image&TB_iframe=true');
return false;
});
window.send_to_editor = function(html) {
imgurl = jQuery('img',html).attr('src');
jQuery('#eo_theme_options[logo]').val(imgurl);
tb_remove();
}
});

и это структура HTML,

<div class="grid col-620 fit">
<input id="eo_theme_options[logo]" class="regular-text" type="text" name="eo_theme_options[logo]" value="" placeholder="Custom Theme Logo"> <input id="upload_logo_button" type="button" value="Upload Image" class="button-secondary">
<label class="description" for="eo_theme_options[logo]">Enter your logo URL here.</label></div>

и это PHP-код, который генерирует HTML,

protected function text( $args ) {

extract( $args );

$value = ( !empty( $this->eo_options[$id] ) ) ? ( $this->eo_options[$id] ) : '';
$upload = (!empty($options)) ? '<input id="upload_logo_button" type="button" value="'.esc_attr($options).'"  class="button-secondary"/>' : '';

$html = '<input id="' . esc_attr( 'eo_theme_options[' . $id . ']' ) . '" class="regular-text" type="text" name="' . esc_attr( 'eo_theme_options[' . $id . ']' ) . '" value="'. esc_html( $value ) . '"placeholder="' . esc_attr( $placeholder ) . '" /> '.$upload.'
<label class="description" for="' . esc_attr( 'eo_theme_options[' . $id . ']' ) . '">' . esc_html( $description ) . '</label>';

return $html;
}

Мой медиа-загрузчик работает нормально, но не вставляется в текстовое поле name=eo_theme_options[logo]

Я перепробовал все, и все работает нормально только вместо того, чтобы вставить в пост, который должен опубликовать в этом,

введите описание изображения здесь

так что за проблема?

1

Решение

Это может показаться глупым, но когда я делал это в прошлом, мне нужно было убедиться, что вставляемое изображение ссылается на «медиафайл», чтобы на самом деле был путь к возвращаемому изображению. Поэтому нажмите «загрузить изображение», затем найдите нужное изображение, убедитесь, что оно ссылается на «медиафайл», а затем «вставить в сообщение».

На мой взгляд, лучше всего сохранить идентификатор изображения в скрытом поле и показать эскиз логотипа. Вы можете сделать гораздо больше, если у вас есть идентификатор изображения, используя путь к изображению.

ОБНОВИТЬ

Снять скобки внутри тега ID входа …

$html = '<input id="' . esc_attr( 'eo_theme_options[' . $id . ']' ) . '"

в

$html = '<input id="' . esc_attr( 'eo_theme_options_' . $id ) . '"
1

Другие решения

Других решений пока нет …