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>
页面的节?
希望这一切都有意义。
最合适的回答,由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网友: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.
所以,也许这是什么,我不知道。很可能会被否决——对我那可怜的脑袋来说太优雅了。%)
干杯