一个奇怪的问题发生在我身上,我无法解决。在我的主题选项页面中,我添加了上载图像的选项,一个用于徽标,另一个用于背景图像。这是我的HTML
<table class="form-table">
<tr>
<th scope="row"><?php _e(\'Logo Image\'); ?></th>
<td><label for="logo_link">
<input id="image-url" type="text" name="logo_link" value="<?php echo get_option(\'logo_link\'); ?>" size="50" />
<input id="upload-button" class="button" type="button" value="Upload Image" />
</label>
</td>
</tr>
<tr>
<th scope="row"><?php _e(\'BG Image\'); ?></th>
<td><label for="bg_image">
<input id="image-url" type="text" name="bg_image" value="<?php echo get_option(\'bg_image\'); ?>" size="50" />
<input id="upload-button" class="button" type="button" value="Upload Image" />
</label>
</td>
</tr>
</table>
This how I enqueued the JS
function media_uploader_enqueue()
{
wp_enqueue_media();
wp_register_script(\'image-upload-js\', get_stylesheet_directory_uri(). \'/js/image-upload-js.js\', true, \'1.0.1\');
wp_enqueue_script(\'image-upload-js\');
}
add_action(\'admin_enqueue_scripts\', \'media_uploader_enqueue\');
这是我在
image-upload-js.js
文件
jQuery(document).ready(function($){
var mediaUploader;
$(\'#upload-button\').click(function(e) {
e.preventDefault();
if (mediaUploader) {
mediaUploader.open();
return;
}
mediaUploader = wp.media.frames.file_frame = wp.media({
title: \'Choose Image\',
button: {
text: \'Choose Image\'
}, multiple: false });
mediaUploader.on(\'select\', function() {
attachment = mediaUploader.state().get(\'selection\').first().toJSON();
$(\'#image-url\').val(attachment.url);
});
mediaUploader.open();
});
});
The annoying problem
媒体上载程序正在为打开
Logo Image 字段,但不用于
BG Image. 我还可以保存选项,一切都已设置好。如果我手动将URL放在BG图像文本字段中,它就是文件。只有媒体上传程序不适用于此。如果我移动HTML块,上载程序只会为第一个块打开。任何发生这种情况的原因。谢谢