基本上,在我保存小部件的那一刻,不再可能打开媒体上传器。返回的错误是
Uncaught TypeError: Cannot read property 'value' of null
当选择图像时(导致load-scripts.php),并且在保存后没有选择图像时没有错误(并且仍然没有显示媒体上传者)。
tl; dr回调在小部件保存后停止响应
我使用的JS代码是:
jQuery(document).ready(function($){
var custom_uploader;
$('.custom_media_upload').click(function(e) {
e.preventDefault();
//If the uploader object has already been created, reopen the dialog
if (custom_uploader) {
custom_uploader.open();
return;
}
//Extend the wp.media object
custom_uploader = wp.media.frames.file_frame = wp.media({
title: 'Choose Image',
button: {
text: 'Choose Image'
},
multiple: false
});
//When a file is selected, grab the URL and set it as the text field's value
custom_uploader.on('select', function() {
attachment = custom_uploader.state().get('selection').first().toJSON();
$('.custom_media_url').val(attachment.url);
});
//Open the uploader dialog
custom_uploader.open();
return true;
});
});
小部件PHP代码是
<img class="custom_media_image" src="<?php if ($instance['image'] != '') echo esc_attr( $image ); ?>" style="max-width:100px; float:left; margin: 0px 10px 0px 0px; display:inline-block;" />
<input class="custom_media_url" id="" type="text" name="<?php echo $this->get_field_name( 'image' ); ?>" value="<?php echo esc_attr( $image ); ?>" style="margin-bottom:10px; clear:right;">
<a href="#" class="button custom_media_upload">Upload</a>
可能是什么问题?
编辑:看起来回调被清除了。当我通过控制台迭代连接相同的回调似乎再次工作。
答案 0 :(得分:0)
我仍然不知道为什么jQuery的钩子会在小部件保存时被清除。我通过向锚点添加onclick标记并更改函数的签名来解决问题。