Загрузка изображений WordPress в пользовательских проблемах виджета
Я разрабатываю свой собственный плагин с функцией загрузки изображений. Я добавил этот код:
... <p>
<label for="<?php echo $this->get_field_id('photo'); ?>">Photo URL:</label>
<input class="widefat image_hso" type="text" name="<?php echo $this->get_field_name('photo'); ?>" id="<?php echo $this->get_field_id('photo'); ?>" value="<?php echo $photo ;?>">
</p>
<p>
<button class="image_upload_hso widefat">Select Image</button>
</p> ...
И PHP часть:
... function photo_upload_option($hook) {
if( $hook != 'widgets.php' )
return;
//enque Javasript Media API
wp_enqueue_media();
wp_enqueue_script( 'uploadphoto', plugin_dir_url( __FILE__ ) . 'js/upload_image.js');
}
// register widget
add_action('admin_enqueue_scripts', 'photo_upload_option');
add_action('widgets_init', create_function('', 'return register_widget("wp_hso_plugin");'));
add_action( 'wp_enqueue_scripts', 'register_plugin_styles' ); ...
И JS:
jQuery(function($){
var frame,
addImgLink = $('.image_upload_hso'),
imgIdInput = $('.image_hso');
addImgLink.on( 'click', function( event ){
event.preventDefault();
if ( frame ) {
frame.open();
return;
}
frame = wp.media({
title: 'Select or Upload Image',
button: {
text: 'Use this Image'
},
multiple: false
});
frame.on( 'select', function() {
var attachment = frame.state().get('selection').first().toJSON();
imgIdInput.val( attachment.url );
});
frame.open();
});});
Проблема: когда я впервые добавляю свой виджет и нажимаю на кнопку "Выбрать изображение" - я вижу перезагрузку страницы. После этого, если я нажимаю еще раз "Выбрать изображение" - он работает нормально, и я вижу медиа библиотеку WP и могу загрузить или выбрать изображение. Когда я нажимаю "использовать это изображение", все идет хорошо, затем я нажимаю кнопку "Сохранить" в WP Widget, и мой виджет сохраняется нормально, но когда я снова нажимаю "Выбрать изображение" - я вижу перезагрузку страницы. В чем дело?