好的,我正在使用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脚本。
最合适的回答,由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,同时处理依赖项。不使用它,就像这个主题试图做的那样,会破坏事物。