管理员中的自定义jQuery中断媒体上传脚本

时间:2012-07-19 作者:Vassilis Barzokas

我有这部分代码,用于加载jquery的自定义版本

        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\', ("http://code.jquery.com/jquery-latest.min.js"), false, \'\');
        wp_enqueue_script(\'jquery\');
一切正常,但如果我打开由此代码加载的媒体上载管理器

    wp_enqueue_script(\'media-upload\');
    wp_enqueue_script(\'thickbox\');
    wp_enqueue_style(\'thickbox\');
并由此触发

                <script language="JavaScript">
                    jQuery(document).ready(function() {
                    jQuery(\'#upload_image_button\').click(function() {
                    formfield = jQuery(\'#upload_image\').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(\'#upload_image\').val(imgurl);
                    tb_remove();
                    }

                    });
                </script>
                    <label for="upload_image">
                        <input id="upload_image" type="text" size="36" name="upload_image" value="<?php  ?>" />
                        <input id="upload_image_button" type="button" value="Upload Image" />
                        <br />Enter an URL or upload an image for the banner.
                    </label>
灯箱将打开并显示所有选项,但当我选择“上载图像”或转到媒体库并从中选择图像时,什么都不会发生。

如果我删除了自定义jquery,那么媒体上传器就可以正常工作。但是我拥有的jquery ui代码不起作用,尽管我正在加载jquery ui脚本,所以我必须加载我的自定义最新版本的jquery。

是否有任何解决方案可以让媒体上传和jquery ui在插件管理面板的同一页面上工作?

1 个回复
SO网友:mrwweb

许多人认为取消注册/重新注册jQuery是一种不好的做法,尽管使用CDN版本可以提高性能(如果要使用CDN,我经常看到Google的版本,而不是jQuery)。然而,如果要这样做,您真的应该只在前端这样做,这样至少管理员可以正确地假设正在使用当前的WP预加载jQuery版本。

因此,请将您的脚本切换到这一点,我怀疑您的问题可能会结束:

function my_custom_scripts() {
    if( !is_admin() ) {
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\', ("http://code.jquery.com/jquery-latest.min.js"), false, \'\');
        wp_enqueue_script(\'jquery\');
    }
}
add_action( \'wp_enqueue_scripts\', \'my_custom_scripts\' );

结束