在WordPress中使用最新的jQuery(管理界面)

时间:2010-10-18 作者:Thiago Belem

我想在我的管理界面上使用最新的jQuery(和jQuery UI)版本(编辑我创建的特定帖子类型)。

我试过这个:

// jQuery 1.x
wp_register_script(\'jquery1x\', \'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js\', false, null, true);

// jQuery UI 1.8.4 PTBR
wp_register_script(\'jquery-ui-custom-pt_BR\', THEME_URL . \'js/jquery.ui.datepicker-pt-BR.js\', array(\'jquery1x\'), null, true);
// jQuery UI 1.8.4  
wp_register_script(\'jquery-ui-custom\', THEME_URL . \'js/jquery-ui-1.8.4.custom.min.js\', array(\'jquery1x\', \'jquery-ui-custom-pt_BR\'), null, true);

// jQuery UI 1.8.4 CSS 
wp_register_style(\'jquery-ui-custom-css\', THEME_URL . \'css/smoothness/jquery-ui-1.8.4.custom.css\');

wp_enqueue_style(\'jquery-ui-custom-css\');
wp_enqueue_script(\'jquery-ui-custom\');
它工作正常,但在其他WP管理页面上,我遇到了一些jQuery错误,因为jQuery的重写(因为它加载了两次)。

如果我“注销”jQuery并再次注册它(使用最新版本),它将无法工作。

这不是我第一次遇到这个问题。。。我只需要在WordPress管理界面上使用最新版本的jQuery,就可以使用Datepicker和Colorpicker等功能。。但直到现在我还不能用register_script.

如果我用“jquery”名称注册它,它将不会更新,因为这一行上已经有WordPress加载的jquery:

<script type=\'text/javascript\' src=\'http://website.com/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils,nav-menu&amp;ver=2b05c108d9016a4caa470b8edaf40953\'></script>
我不能插手这件事load-scripts.php 文件更改文件名,因为我不想更改WordPress核心。

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

从3.6版WordPress开始,主动阻止在admin中注销“关键”脚本。

对于设定的范围(在管理的特定部分加载较新的jQuery),通常加载jQuery的自定义副本并使用noConflict() 立即将其隔离在自己的变量中,以便在自定义JS代码中使用。

取消注册对您不起作用,因为默认情况下WP会在管理区域连接脚本。因此,当您从其他地方加载jQuery时,它就会崩溃。

您可以禁用串联以使其工作(根据需要添加条件):

add_action( \'admin_init\', \'jquery_admin\' );

function jquery_admin() {

    global $concatenate_scripts;

    $concatenate_scripts = false;
    wp_deregister_script( \'jquery\' );
    wp_register_script( \'jquery\', ( \'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js\' ), false, \'1.x\', true );
}
PS非常感谢从Google加载最新版本的技巧,我不知道:)

SO网友:Evan

如果您的自定义贴子类型页面可以使用它,并且这正是您想要的,那么您可以为该页面添加一个条件标记检查:

if (is_admin() && $_GET[\'post_type\'] == \'custom_post_type\') {
  // jQuery replacement
}
可能更好的解决方案是查看此插件:http://wordpress.org/extend/plugins/use-google-libraries/ 它将用google的CDN中的库覆盖默认的WordPress AJAX库。

关于这一点,有几件好事,因为这么多网站都在使用谷歌的库,它们已经被缓存了,你不必手动更新你的库。

结束

相关推荐

如何消除wp-admin中奇怪的404错误?

我运行一个WordPress站点,有大约70个活动插件。每隔一段时间,我会在/wp-admin/ 不知从哪里冒出来的页面。只需再次尝试即可解决错误,但如果错误发生在插件升级过程中(因为自动重新激活失败),则会非常不方便。我认为,同样的问题导致我的仪表板上的某些模块有时无法加载。考虑到list of plugins I have installed, 是否有人知道他们之间的问题可能导致此问题?编辑:主机信息:DreamHost;我认为服务器正在使用Apache httpd运行自定义的Debian构建