Я создал плагин для настраиваемого логотипа, и он работает нормально, но когда я попытался добавить эту функциональность в существующие параметры темы, он не работает.
У меня есть этот код 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]
Я перепробовал все, и все работает нормально только вместо того, чтобы вставить в пост, который должен опубликовать в этом,
так что за проблема?
Это может показаться глупым, но когда я делал это в прошлом, мне нужно было убедиться, что вставляемое изображение ссылается на «медиафайл», чтобы на самом деле был путь к возвращаемому изображению. Поэтому нажмите «загрузить изображение», затем найдите нужное изображение, убедитесь, что оно ссылается на «медиафайл», а затем «вставить в сообщение».
На мой взгляд, лучше всего сохранить идентификатор изображения в скрытом поле и показать эскиз логотипа. Вы можете сделать гораздо больше, если у вас есть идентификатор изображения, используя путь к изображению.
ОБНОВИТЬ
Снять скобки внутри тега ID входа …
$html = '<input id="' . esc_attr( 'eo_theme_options[' . $id . ']' ) . '"
в
$html = '<input id="' . esc_attr( 'eo_theme_options_' . $id ) . '"
Других решений пока нет …