以下是最佳方法。将以下内容添加到主题的 functions.php 文件中
if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
function my_jquery_enqueue() {
wp_deregister_script('jquery');
wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.ac.cn/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
wp_enqueue_script('jquery');
}
将 URL 替换为您要使用的 jQuery 版本的位置。
为什么这是最好的方法?这种方法和简单地像这样引用它有什么区别:
<script type="text/javascript" src="/js/jquery-1.3.2.min.js">
朋友,我认为这样做是为了避免 Jquery 冲突。
我认为这是因为 jquery 从 googleapis 下载的速度更快,而 googleapis 在许多服务器上,而不是您网站所在的服务器。
有些插件使用 jQuery。这样,您就可以确保 jQuery 不会多次加载。
为了避免 jquery 冲突,上面的代码想要放在 function.php 上,标签用于 html。当您在 wordpress 中使用多个 jquery 功能时,上面的代码很有用
Andrew... 我只想说 \m/
感谢您的 JQuery 教程
这对我很有用。
非常感谢
这需要通过更改该调用来更新为 jQuery 1.4.0
太简单了。太完美了。谢谢!
谢谢,我会试试。
我无法让 jQuery 与 wordpress 一起使用,我已经尝试过很多不同的方法。请您看看我的代码,看看哪里错了?
$(document).ready(function() {
$(‘.slideshow’).cycle({
fx: ‘fade’ // 选择您的过渡类型,例如:fade、scrollUp、shuffle 等…
});
});
抱歉,我的代码被剪掉了…
?php wp_enqueue_script(‘jquery’); ?>
?php wp_enqueue_script(‘jquery-ui-1.8.2.custom.min’, ‘/wp-content/themes/nordborg/js/jquery-ui-1.8.2.custom.min.js’,array(‘jquery’)); ?>
?php wp_enqueue_script(‘jquery.cycle.min.js’, ‘/wp-content/themes/nordborg/js/jquery.cycle.min.js’,array(‘jquery’)); ?>
太棒了,
非常感谢。我无法让 jQuery 正常工作,无论我做什么,但当我将它添加到 functions 中时,它就像一个魅力一样工作。
非常感谢,我可以继续编码而不是调试。
William
如果我有 Mootool 或 Jquery 旧版本。
如何避免 Jquery 冲突?
事实上,这很重要,因为很多网站都在使用它,而且这个 js 可能已经存在于用户的浏览器 cookie 中!
您需要查找 cookie 和缓存之间的区别;)
我试图将现有网站迁移到 WordPress 以利用其 CMS 功能。该网站使用来自 http://galleria.aino.se/ 的 galleria classic 主题。这在 wordpress 之外工作正常,但一旦它被添加到 wordpress 中,它就不再工作了,我得到的所有内容都是所有图像一个接一个地显示。我已经创建了我的每个页面模板,以便除了添加通常的
当我在 Firefox 中运行该网站时,Firebug 给出了以下错误
Galleria 未定义
[在此错误上中断] Galleria.loadTheme(‘galleria.classic.min.js’);
如果有人能帮忙,我将不胜感激,因为我已经尝试了好几天来解决我的代码问题。请帮忙!!!
请使用以下链接查看代码
http://pastebin.com/W664Y2Ab
谢谢
它仍然缺少本地版本回退,以防他们来自中国、伊朗,或者您碰巧目前没有互联网连接,正在您的本地主机上工作。有几种方法,我仍然不确定是否非常喜欢它,但在功能上它是最好的
beneverard.co.uk/blog/wordpress-loading-jquery-correctly-version-2/
注意。那个片段已经过时了。如果您从谷歌获取它,请使用来自谷歌的最新版本 (http://code.google.com/apis/libraries/devguide.html)。还要注意,如果您从谷歌获取它,您需要保持更新。我知道谷歌版本可能更快,因为本地缓存,但通过仅使用 wordpress 版本,您不必记住更新您的 jquery,除非您出于某种原因需要使用最新的 jquery 版本。
要使用 wordpress 的自己的版本,只需将此添加到您的 functions.php 中
Byronyasgur,重点是从谷歌包含它的优势——很多,你是在为互联网做贡献。是的,简单的方法就是使用 WordPress 版本。
正如上面所述,该链接从谷歌获取最新版本,就像 WordPress 一样。所以不用担心更新问题。
至于您的代码片段,注册/排队脚本函数的一部分是是否在页眉或页脚中包含它。默认情况下它是在页眉中,因此添加过滤器和函数是不必要的。
最后,正如上面所述,没有包含本地版本回退。我在上面给出了一个关于最佳方法的链接。
为什么我还在讨论这个?互联网已经讨论过这个问题。这开始表明了互联网法则,即在一定数量的评论后,人们就会停止阅读它们,而这些评论又会重复出现。
…. 事实上,wp_head 稍微有点错误——实际上,在‘wp_enque_scripts’ 上这样做更好,像这样
参见 - http://wordpress.stackexchange.com/questions/21561/where-is-the-right-place-to-register-enqueue-scripts-styles/21579#21579
(以前,codex 曾经推荐使用 init,并且我还在其他地方看到过推荐)
David,
您可能确实是对的,谷歌 jquery 方法总是获取最新版本——事实上,它更有意义……但肯定版本号仍然需要更新,或者设置为 false 或者被删除,或者其他什么——当 jquery 已经是 1.7 或更高版本时,它仍然是‘1.3.2’,有什么意义呢?
您确定您是对的关于过滤器的说法吗——您注意到它是在 functions.php 中,而不是 header.php 中吗?我认为我们不能只将 wp_enqueue_script(‘jquery’); 扔进 functions.php 文件中,而无需通过过滤器对它进行排队,而且您是否错误地认为 wp_head 与脚本是否在页眉或页脚中加载有关,因为我相当确定它没有。据我所知,wp_head 是(实际上是不正确的,因为我后来提到了)排队触发的时间……它最终是在页眉还是页脚中打印,是通过 wp_enqueue_script() 中的最后一个参数 ($in_footer) 选择的,根据 codex 所述。
我的网站速度慢得令人痛苦。我基于“murtaugh-HTML5-Reset-Wordpress-Theme-8aa6329”创建了它。我仍在努力。
根据 Pingdom 工具,它卡住的一个地方在这里
http://www.MY-DOMAIN.org/ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js?ver=3.3.1
在我的 functions.php 中,我有这段代码
任何建议都将不胜感激。
嗨,Claudette,
您发布的“卡住”URL 问题是它不存在——您需要确保它直接访问 Google APIs 服务器,而无需包含您自己的域名。在您包含的 functions.php 代码片段中,您不需要在 ajax.googleapis URL 周围加上一对括号。只要引号(单引号或双引号)就可以了。
注意 WordPress 开发者
请为 WordPress 社区做个大忙,永远不要在您将发布到公众的主题中以这种方式实现 jQuery。无论是商业主题还是计划公开发布的免费主题。
我建议您只在您自己运行和管理的网站以及您将确保始终运行最新版本的 jQuery 的网站上以这种方式实现 jQuery。
如果您要将主题发布到公众(商业或免费),请始终使用 wp_enqueue_script('jquery') 调用简单地加载 jQuery,并且永远不要取消注册内置的 jQuery 并从外部源调用它。
使用最佳实践开发的 WordPress 插件通过 wp_enqueue_script('jquery') 启用 jQuery,并且它们期望加载当前 WordPress 版本使用的 jQuery 版本。
如果您取消注册了内置的 jQuery 调用,并注册了对 Google 服务器上旧版本 jQuery 的调用……您就是在自寻烦恼。
为什么?很简单。您通过这样做改变了所有其他插件和 WordPress 本身的全局 WordPress 环境。
如果一个插件期望 jQuery v1.7.1 因为它内置于 WordPress v3.3 中,而您的主题出现了,并且它重新注册了 jQuery 并且从 Google 服务器注册了 jQuery v1.2.1?事情会崩溃,因为您可能有一些插件期望 jQuery v1.7.1,而您的主题却加载了 jQuery v1.2.1。
WordPress 附带 jQuery。它在每次发布时都会更新。请为社区做个忙,不要更改它,除非您知道自己在做什么,并且您不打算将主题发布到公众。
以这种方式实现 jQuery 的主题开发者,当他们不知道自己在做什么时,会导致插件开发者及其用户无休止地进行支持。
只有在您自己的网站上实施这种方式才合适。加载 jQuery 不应该在发布到公众的主题中以这种方式完成。
克里斯·科伊尔:请:我非常感谢您对以上评论中提出的主张的答复。您同意吗?您是否为上面的建议辩护?在什么情况下?
我提出这个请求的原因:我感到困惑。对诸如
“请为 WordPress 社区做个大忙,永远不要在您将发布到公众的主题中以这种方式实现 jQuery。”
这样的评论缺乏回应让我感到困惑。您同意这个评论吗?您是否坚持您最初的建议?
提前感谢 -
埃弗拉特
感谢您的提示,科迪。看起来为一个正在为其开发的社区提供支持是常识,但很多时候,这样的细节会从我们身边溜走!从大局来看,我理解为什么让主题使用 WordPress 的方法来启用 jQuery 会更好,因为开发者不必根据 WordPress 社区的支持程度来不断更新他们加载的版本(就像开发者更新 WordPress 的启用方式,以及编写需要支持用户群的插件的开发者……等等!)。
加强联系,避免……连锁反应?(我不想说太肉麻。好吧,我撒谎了。我想!)
为什么不在启用 jQuery 1.9.1 后立即调用 .noConflict() 并启用 jQuery Migrate 呢?
似乎 WordPress 版本的 jQuery 和 Google 版本的 jQuery 之间的唯一区别在于 jQuery.noConflict(); 在最后被调用。
谢谢!这让我在紧急项目中得以脱身,我已经调试了一整天了!我会分享这篇文章!再次感谢 CSS Tricks!
谢谢!
这真的很有帮助。非常感谢您。
此致,
普雷拉克·特里维迪。
在 WordPress 中包含 jQuery 库的好方法,从 Google API 获取最新 jQuery 库的包含会避免您可能遇到的许多错误。无论是使用 Google Git 还是 jQuery 的 URL。
那么,这个代码片段有更新版本吗?
@卡尔·汉考克 - 非常有帮助,这确实很有道理。感谢您提供的信息。
我无法表达我现在有多爱你。我已经流了 4 个小时的汗水,试图找到解决方案,而这个方法如此简单有效,我几乎要哭了。
默认情况下,它没有在页脚加载的原因是什么?
我认为这主要是因为太多插件使用 wp_head 来注入它们的脚本,如果您默认使用页脚 wp_enqueue_style,那么您就有可能破坏很多东西。
好的 - 这似乎是合理的,但如果要删除阻塞渲染的问题怎么办?忽略这一点?
http://www.feedthebot.com/pagespeed/render-blocking.html
哦,我甚至在视窗上方都感到困惑。
干杯
托马斯
我敢肯定,我已经在公开帖子中做了一些修改,现在已经掌握了这一点。我已经将所有插件和必需的脚本一起连接起来,并使它们默认在页脚中加载。
请注意,我还重新注册了 comment-reply 以隐藏(WordPress)版本号,并在页脚以及 single.php 中加载它。请注意,从 is_singular 更改为 is_single。
只需使用以下链接之一获取您想要的版本
https://ajax.googleapis.ac.cn/ajax/libs/jquery/1/jquery.min.js - 版本 1.x.x
https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.7/jquery.min.js - 版本 1.7.x
https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.7.4/jquery.min.js - 版本 1.7.4
https://code.jqueryjs.cn/jquery-latest.min.js - 最新版本
只是我个人的想法…
WordPress 的设置方式是,您不应该从 CDN 加载,而应该始终让 WordPress 使用它自己的 jQuery 版本;否则可能会破坏东西。
wp_enqueue_script("jquery");
从 CDN 获取它有时不能与其他 WordPress 插件和脚本很好地配合,这就是 WordPress 社区不喜欢它的原因……尽管一般来说这是一个好主意。您好,我想在我的 WordPress 主题中放置一个下载的幻灯片……我已经包含了 JavaScript 和 CSS 文件……但在放置 HTML 代码时,我在 slides.php 文件中遇到了困难……请建议……
如果您**从未**打算**分发您的主题**,并且您不太担心使用 WordPress 社区开发的插件,那么这就可以了。
但是,如果您**将分发**您的主题给其他 WordPress 用户,那么使用 Google 的 jQuery 将是对整个社区的不负责任。WordPress 已经包含了一个版本的 jQuery,您**应该**使用该版本。
许多主题开发者选择不使用 WordPress 附带的版本,因为它是无冲突模式。您必须付出更多努力才能使您的 js 与无冲突模式一起使用。因此,摆脱它并使用 Google 的版本(这是普通 jQuery,而不是无冲突版本)似乎是一种避免花费额外几分钟来正确编写 js 代码的简单方法。
问题是,您现在改变了所有其他开发者对 WordPress 提供内容的预期。他们已经开发了自己的插件,以便与 WordPress 附带的无冲突版本的 jQuery 一起使用,而您却将地毯从他们脚下撤走了,并将地毯从所有将使用您的主题的人脚下撤走了。
取消注册捆绑的 jQuery 版本,而是使用 Google 的版本,乍一看似乎很好,但会导致很多问题。至少要做好插件停止工作的准备。相反,我恳请每个人都花些时间了解如何创建与无冲突模式一起使用的 js,并使用 WordPress 附带的版本 - 这最终会使您的主题**更加强大**。
当然,您始终可以使用“//”代替 if 语句来简化它 - 就像这样
wp_register_script('jquery', "//ajax.googleapis.ac.cn/ajax/libs/jquery/1.7.1/jquery.min.js", false, null);
完整的代码现在看起来像这样
一如既往,感谢您的文章,克里斯!
是的,我正要說,你能不能直接避免協議解析部分,直接使用協議模糊性?謝謝 Yazin 和 Chris!
非常棒的观点,我正要添加这个。甚至可以节省一点执行时间来去掉协议规范。谢谢 Chris!
还有一点值得注意的是,
'wp_enqueue_scripts'
操作不会在管理请求中运行,因此if (!is_admin())
实际上并不需要,尽管它确实使那些可能不知道管理有一个单独的钩子('admin_enqueue_scripts'
)的普通读者清楚了它的意图。我同意,因为从 CDN 加载 jQuery 避免了无冲突方面,所以这不是最好的主意,除非你真正控制最终使用情况。
<
p>你好,感谢你的提示。
<
p>
我在 WP 的模板中安装插件时遇到问题,根据插件说明,修复它的唯一方法是放置这段代码
这是我的 Funtions.php
说明说要放置这段代码
但它不起作用,我该怎么办?或者,在 funtions PHP 中放置它的正确方法是什么?
我真的很感谢你的帮助 :)
好吧……如果 WordPress 实际上将所有工作部分包含在一个易于使用的 ui 文件中,而不是必须把它们全部找出来才能确定它是否能在 WP 中运行,那就太好了——你们反对 CDN 的言论是可以理解的,但嘿,最终你们都给出了错误的建议——至少 Chris 给出了一个选项,而你们却告诉人们什么也不要这样做——这毫无意义。以 Genesis Accordion 为例,它使用了内置的 jquery-ui…相反,你们的输入应该更多地说明在 WordPress 中注册、排队和挂钩(以及在无冲突模式下运行)的正确方法,因为事实是,人们不会仅仅因为你不希望他们这样做就停止这样做……我会花更少的时间担心 CDN 问题,而更多地时间确保所有插件在 29 日之前都能在 1.9 下正常运行。
这是正确的吗?
函数调用
非常感谢你提供这段小代码!它今天救了我!我们其中一个插件由于最新 jQuery 更新而崩溃。希望我能弄清楚最新版本中存在的问题,但就目前而言,这将起作用!非常感谢!
嗨!
只是一个快速的问题——我的网站运行一个需要 jQuery 1.6.0 的滑块。
所以我想在 functions.php 中构建一个像下面这样的条件。我知道在 functions.php 中无法做到这一点——但如何实现呢?
is_front_page() 使用 jQuery 1.6.0,而其他部分使用最新版本……
我一直很难在 WordPress 中包含我的 jQuery。我试图避免取消注册。在 function.php 中输入后
我该如何正确调用我的 .js 文件?谢谢!
我在对着桌子猛击脑袋一个小时后找到了这个。它完美地工作了,而其他十种资源都失败了。你是个好人,Chris。
很高兴看到 CSS Tricks 上的 WP 排队代码,而且没有冗长的文章与之匹配(当你急于找到有用的代码,而前面却有一大段解释时 ;-)),但是,从评论来看,它可能过于简短。
脚本最好排队的原因是(不按特定顺序):
1) 能够从 functions.php 文件中轻松管理它们
2) 如果需要,在“队列”中对脚本进行排序
3) 使用条件语句轻松取消排队/排队(如果你必须这样做)
4) 更轻松地管理和解决冲突
5) 尽可能尝试将最新插件版本同步到统一的 jQuery 版本
回答“为什么是这样的?”这个问题是因为,历史上,一些插件的 JS/jQuery 实现不佳(以及同时存在多个不同的版本——这根本不起作用),这会导致巨大的令人费解的冲突,就像你们中的许多人可能意识到的那样。使用排队系统为在 WordPress 中使用 jQuery 带来了某种秩序,并且确实使故障排除变得更快(而且从经验来看,故障排除也变得不那么常见)。
代码片段来自 WordPress Codex:http://codex.wordpress.org/Function_Reference/wp_enqueue_script
此页面也(简要地)更详细地解释了排队系统方法。
亲爱的开发者您好
我刚发现你的网站——我需要 jQuery 的帮助
我在一个测试页面中遇到了错误
可能是我的 WordPress 中的 jQuery 出现了一些错误
我的 WordPress 似乎有点问题-…-
注意——我运行的是版本——wp 3.8.1
请查看错误
http://literaturen.org/wp/test/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils&ver=3.8.1 <!– 看
http://literaturen.org/wp/test/wp-admin/load-scripts.php?c=1&load%5B%5D=jquery-core,jquery-migrate,utils&ver=3.8.1 <!– 看
我该怎么办?任何帮助都将不胜感激。
我只需要你的帮助
你可以通过 [email protected] 联系我
问候
martin
如何将我的 javascript 从静态网站上传到 WordPress 并使用它?
你可以使用两种方法之一。
1) 使用标签。以下是一个示例
<script type="text/javascript" src="/path-to/your-javascript.js">
2) 注册和排队你的脚本。以下是一个示例
`
‘
你可以使用两种方法之一。
1) 使用标签。以下是一个示例
<script type="text/javascript" src="/path-to/your-javascript.js”>
2) 注册和排队你的脚本。以下是一个示例
`
wp_register_script(‘global’, (get_stylesheet_directory_uri() . ‘/assets/js/global.js’), ‘jquery’, ‘1.0’, true);
wp_enqueue_script(‘global’);
`
非常有用
你不应该对插件或模板使用不同的 jQuery 版本,因为它会导致与其他插件/模板/WordPress 核心部分发生冲突。(除非你绝对需要……)
https://wordpress.stackexchange.com/questions/45437/including-jquery-and-javascript-files-the-correct-way/45440#45440?newreg=52b3c093eee841c4a1e1b7ab41736b9e
这可能可以通过使用协议相对 URL(http://www.paulirish.com/2010/the-protocol-relative-url)来改进,以消除整个 http/https 部分。
谢谢。我发现它对我非常有用。
你好 Chris,我一直使用排队脚本,在一些 WordPress 网站上运行良好,我开始在我的 Mac 上使用 MampPro 构建一个本地 WordPress 网站,但由于某种原因,它无法连接到我的 css 文件夹。
使用 .’css/custom.css’ 甚至尝试了 ../css,有什么想法吗?
例如:get_template_directory_uri().’/css/custom.css’ ); }
它是一个子主题 twenty sixteen,主样式很好。
我现在不在我的 Mac 上,稍后我会发布代码
我们需要阅读的内容 :)