关于wp_Register_script的工作方式的问题

时间:2011-11-04 作者:racl101

好的,我正在使用WordPress的根主题(https://github.com/retlehs/roots),这是一种入门主题或主题框架。

我对它取消注册WordPress加载的jQuery版本的方式感到困惑,但它会再次注册它without specifying the exact location of the script.

所以在标题中。主题php有以下代码:

...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
  <script>window.jQuery || document.write(\'<script src="<?php echo get_template_directory_uri(); ?>/js/libs/jquery-1.6.4.min.js"><\\/script>\')</script>
...
,这对我来说是这样的:“下载Google托管的jQuery脚本,但如果由于某种原因jQuery对象不存在,那么只需创建一个脚本元素,加载主题附带的脚本即可。

但是,在名为根清理的主题文件中。函数中包含的php。php of theme有以下代码可以注销WordPress附带的jQuery脚本,但立即再次注册jQuery,而无需指定脚本的url:

...
function roots_head_cleanup() {
  ...

  // don\'t load jQuery through WordPress since it\'s linked in header.php
  if (!is_admin()) {
    wp_deregister_script(\'l10n\');
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', \'\', \'\', \'\', true);
  }
}

add_action(\'init\', \'roots_head_cleanup\');
...
现在,我去看了文档对此的描述,它说的是这样的:“只有WordPress还不知道这个脚本时,才需要这个参数[位置参数]。”

所以我想知道,通过在标题中包含加载jQuery的脚本标记。php这是否意味着WordPress在调用wp\\u register\\u脚本时就知道它们?像这样:

wp_register_script(\'jquery\', \'\', \'\', \'\', true);
我这样问是因为我想尝试一下这种技术,但我没有得到我预期的结果。也就是说,我使用wp\\u enqueue包含的、依赖于jQuery的javascripts即使在我删除了头中包含它们的脚本标记时仍然被加载,这意味着我加载的javascripts失败了,因为没有加载jQuery。这也告诉我,如果我没有指定location参数,WordPress不一定知道jQuery脚本。

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

为了记录在案,这完全是wrong 要做的事情。

主题应避免(从不阅读!)取消注册WordPress注册的jQuery脚本(插件绝对不能这样做)。

如果主题要取消注册jquery脚本(替换它),则应该正确地重新注册它:

 wp_register_script( \'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js\');
问题就在这里。以上内容摘自codex. 上面的jQuery版本现在已经过时,可能会破坏插件。这就是为什么主题和插件应该避免替换jQuery版本的原因。

上面的主题是拙劣实践的精彩展示。它不仅没有正确地重新注册jQuery,而且会继续直接在标头中打印它(无论何时需要)。

答复:

所以我想知道,通过在标题中包含加载jQuery的脚本标记。php这是否意味着WordPress在调用wp\\u register\\u脚本时就知道它们?

我这样问是因为我想尝试一下这种技术,但我没有得到我预期的结果。也就是说,我使用wp\\u enqueue包含的、依赖于jQuery的javascripts即使在我删除了头中包含它们的脚本标记时,仍然会加载,这意味着我加载的javascripts失败,因为没有加载jQuery

是的,WordPress认为正在加载jQuery(但实际上“”是作为文件路径传递的-这可能会导致错误)。因此,即使jQuery没有实际加载,脚本仍然被加载。

wp_register_script (和相关函数)以无冲突的方式加载javascript,同时处理依赖项。不使用它,就像这个主题试图做的那样,会破坏事物。

结束

相关推荐

WP主题jQuery与使用jQuery的插件冲突

我与我管理的一个网站发生jquery冲突。引用此链接:(http://www.terraworldltd.com/pc/business/2056.html ), 产品页面由奇特的缩放组成,当点击图片时,图片会缩小。对jquery的调用是在单节点上完成的。产品的php。代码如下:<?php get_header(); ?> <script> var closebutton=\'<?php bloginfo(\'template_directory\'); ?