目前我尝试在我的插件中包含wordpress媒体库,但图像的url不会复制到相应的输入字段中。当我调试代码并包含alert(image_url);我得到一个“未定义”。
有人知道我在做错了什么吗?我的代码如下:
JS:
jQuery(document).ready(function() {
jQuery('#upload_logo_button').click(function() {
tb_show('Upload a logo', 'media-upload.php?referer=clb_plugin_options&type=image&TB_iframe=true&post_id=0', false);
window.send_to_editor = function(html) {
var image_url = $('img',html).attr('src');
jQuery('#clb_setting_logo').val(image_url);
tb_remove();
};
return false;
});
});//jquery document
PHP:
public function admin_enqueue_scripts_func() {
wp_enqueue_script('jquery');
wp_enqueue_script('thickbox');
wp_enqueue_script('media-upload');
wp_register_script( 'js-script-clb-admin', plugins_url( 'js/clb-admin-min.js', dirname(__FILE__) ), array('jquery','media-upload','thickbox'));
wp_enqueue_script( 'js-script-clb-admin');
}//function admin_enqueue_scripts_func
add_action( 'admin_enqueue_scripts', 'admin_enqueue_scripts_func' );
HTML:
<input type="text" id="clb_setting_logo" name="clb_plugin_options[clb_setting_logo]" value="<?php echo esc_url( $options['clb_setting_logo'] ); ?>" />
<input id="upload_logo_button" type="button" class="button" value="<?php _e( 'Upload Logo', 'clb' ); ?>" />
答案 0 :(得分:1)
首先,将wp_enqueue_media();
添加到admin_enqueue_scripts_func()。首先尝试这一点,因为你做的事情与我最近做的事情完全不同(有效)。
但据我所知,你使用var image_url = $('img',html).attr('src');, but I don;t see
作为参考资料,这是我的js。
var custom_uploader;
$(document.body).on('click', '#upload_image_button' ,function(e)
{
e.preventDefault();
if (custom_uploader)
{
custom_uploader.open();
return;
}
custom_uploader = wp.media.frames.file_frame = wp.media(
{
title: 'Choose Image',
button: {
text: 'Choose Image'
},
multiple: false
});
custom_uploader.on('select', function()
{
attachment = custom_uploader.state().get('selection').first().toJSON();
$('#upload_image').val(attachment.url);
});
custom_uploader.open();
});
也许试试这个,用你自己的id替换id。 希望这有点帮助。