如何在部分中加载WordPress jQuery

时间:2013-08-25 作者:John Doe

In my WordPress blog I included a javascript-based slideshow 在顶部,效果很好。我有一个PHP文件,它输出必要的javascript<head> 在my child主题的函数中通过“add\\u action”进行标记。php文件:

function add_slideshow_js() {
include(\'/path/slideshow_output.php\');
echo $js_output;
}
add_action( \'wp_head\', \'add_slideshow_js\' );
此PHP输出的javascript包括对控制javascript文件的调用:

<script src="path/slideshow.js" type="text/javascript"></script>
。。。然后是制作页面幻灯片的javascript。

一切都很好,看起来很棒。问题是,it\'s dependent on jquery, 但它工作得很好,所以我想知道jquery实际上是如何被包括在内的。

我关掉了所有的插件,它停止了工作。所以很明显,其中之一就是包含jquery并允许它工作。

但是我想我应该确保jquery会被包括在内,而不依赖于插件,因为我可能会在将来的某个时候删除重要的插件,当然我仍然希望幻灯片能够正常工作。

因此,在禁用所有插件的情况下,我想我应该通过在子主题的函数中编写这个函数来显式地包含jquery。php文件:

function insert_jquery(){
   wp_enqueue_script(\'jquery\');
}
add_filter(\'wp_head\',\'insert_jquery\');
现在,这确实包括jquery,但它是在页脚中调用的,通过实验,我发现只有在<head> 标签

我可以编写一个函数来调用我自己的jquery文件,但我得到的印象是,最好使用WordPress中包含的jquery,而且在任何情况下,我认为重新启用插件会让jquery被调用两次。

那么,我可以在子主题的函数中编写什么函数呢。可以可靠地将WordPress jquery加载到<head> 页面的节?

希望这一切都有意义。

4 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

默认情况下,如果您将jquery排入队列,则会将其添加到页眉中,但如果任何插件正在更改其默认行为并将其添加到页脚而不是页眉中,则可以使用以下代码对其进行更改,并强制其再次添加到页眉中。

function insert_jquery(){
wp_enqueue_script(\'jquery\', false, array(), false, false);
}
add_filter(\'wp_enqueue_scripts\',\'insert_jquery\',1);
有关wp\\u enqueue\\u script()函数的更多信息,请访问this page.

SO网友:yunieski dieguez garcia

function insert_jquery_in_header(){
wp_enqueue_script(\'jquery\', false, array(), false, false);
}
add_filter(\'wp_enqueue_scripts\',\'insert_jquery_in_header\',1);
默认情况下,wp在页脚中加载de js文件,所以,通过这种方式,您可以强制将其加载到页眉中,希望能有所帮助!

SO网友:s_ha_dum

我猜您有一个插件可以处理脚本注册,以便jQuery加载到页脚中。我敢肯定它在<head> 默认情况下。如果页脚中包含幻灯片,您可以尝试使其正常工作,或者您可以找出导致问题的插件并尝试更正。这可能有用,但我还没有测试过。

function insert_jquery(){
   wp_enqueue_script(\'jquery\');
}
add_filter(\'wp_enqueue_scripts\',\'insert_jquery\',1);
但从更大的角度来看,你在做什么is not the right way 加载脚本。你应该是registeringenqueueing slideshow.js 几乎可以肯定的是,从slideshow_output.phpregisteringenqueueing, 通过将变量传递给脚本wp_localize_script. 然后,您可以使用$deps 参数(请参见链接),以确保所有内容都按照需要加载的顺序加载。

SO网友:Jaakko Pöntinen

当我加载自己的脚本时,我的问题停止了(使用WP 5.3.2加上一个没有外部文件的空主题),并添加了对jQuery的依赖性(由WP即时排队)。

function load_assets() {
    wp_enqueue_script( \'mm-scrollfix\', site_url( \'/wp-content/js/mm-scrollfix-1.0.js\' , __FILE__ ), array( \'jquery\' ), \'1.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'load_assets\' );
这种依赖似乎唤醒了jQ。请注意,代码中的最后一个“true”是在结束正文标记之前加载资产,而不是头部;这是wp\\u enqueue\\u脚本输出为默认值的地方。

如果我装上你的东西。使用wp\\u footer钩子的js文件(更进一步),因此没有声明依赖关系,它会导致

Uncaught ReferenceError: jQuery is not defined.
所以,也许这是什么,我不知道。很可能会被否决——对我那可怜的脑袋来说太优雅了。%)

干杯

结束

相关推荐

作为一名插件开发人员,如何应对主题开发人员从Google加载jQuery?

主题开发人员喜欢取消wordpress jquery的注册,转而从google加载jquery。有人告诉我这是为了速度,我同意。这通常不是问题for me 因为我总是使用jQuery 而不是$. 但我确实看到一些插件试图使用$, 嗯,它会生成javascript错误,也会使我的插件无法工作。结果,客户把责任推给了无辜的我。有时我的js代码取决于wordpress jquery的版本,但主题开发人员倾向于加载a specific version 来自谷歌。即使主题已更新,也可能不会更新jquery版本,更不