<?php
function my_scripts_method() {
// register your script location, dependencies and version
wp_register_script('custom_script',
get_template_directory_uri() . '/js/custom_script.js',
array('jquery'),
'1.0',
true);
// enqueue the script
wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>
但是如果我只想添加普通的jquery片段怎么办内联而不是文件。如何做到这一点。
编辑
我知道我可以使用此脚本在页脚中添加一些内容:
<?php
function myscript() {
?>
<script type="text/javascript">
// This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');
但是如何指定要使用的脚本需要运行jquery。
#1 楼
最简单的方法实际上是结合wp_enqueue_script
和Saif和v0idless已经引用的页脚操作。我经常在主题和插件中使用jQuery,但是我也将所有其他脚本也放在页脚中。实际排队的最佳方法是:
function myscript() {
?>
<script type="text/javascript">
if ( undefined !== window.jQuery ) {
// script dependent on jQuery
}
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );
function myscript_jquery() {
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );
但是此代码片段假定您是一个正在排队的脚本,即您是在自己的插件或主题中进行的。
目前,无法将嵌入式脚本添加到WordPress页脚中并加载依赖项。但是,如果愿意的话,还有另一种选择。
其他选择
当WordPress使用脚本时,它将内部将它们加载到对象中以跟踪它们。对象内部基本上有3个列表:
已注册
队列
完成
to_do
当您第一次使用
wp_register_scripts()
注册脚本时,它是放置在注册清单中。 wp_enqueue_script()
脚本时,它将被复制到队列列表中。将它打印到页面后,它便被添加到完成列表中。因此,您可以记录它需要使用jQuery并以编程方式进行检查以确保已加载jQuery,而无需排队该脚注脚本以使用jQuery。 。
这使用
wp_script_is()
来检查脚本的位置。function myscript() {
if( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript">
// script dependent on jQuery
</script>
<?php
}
}
add_action( 'wp_footer', 'myscript' );
您也可以使用相同的代码来强制jQuery加载页脚,但是我没有测试过...所以您的行驶里程会有所不同。
评论
您提供的代码段是否被WordPress插件开发标准接受?如果是的话,那么我将在我的插件中使用它...请给我答复...
– Laraib
16-10-19在14:08
最后一个片段?不能。WordPress插件应始终满足脚本要求。以这种方式强制jQuery加载到队列系统之外只是您应该在自己的站点上做的事情,您可以在自己的站点上控制100%的环境。插件绝对不适合这样做。
–EAMann
16-10-20在4:51
那你能给我一些可行的例子吗?
– Laraib
16-10-20在5:41
因为我正在开发我的第一个WordPress插件,所以我很乐意让WordPress团队接受该插件...请等待您的任何答复....就此发表您的意见,以便我可以创建并接受我的插件...
– Laraib
16-10-20在5:42
#2 楼
从wordpress 4.5开始,您可以通过wp_add_inline_script()
添加内联脚本。要将JavaScript片段添加到需要jQuery的页脚中,此代码可以帮助您function enqueue_jquery_in_footer( &$scripts ) {
if ( ! is_admin() )
$scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );
function theme_prefix_enqueue_script() {
if(!wp_script_is('jquery', 'done')) {
wp_enqueue_script('jquery');
}
wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );
wp_add_inline_script和wordpress jquery
#3 楼
像这样使用wp_footer
操作:add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
/** INSERT SCRIPT HERE **/
</script>
<?php
}
评论
这不是一个好答案。我问如何指定脚本所需的jQuery。如果用户没有运行jquery,则您的实现将无法运行。
– Saif Bechan
2011年11月6日14:18
#4 楼
我知道OP希望在jQuery上指定一个要求,而WordPress的作者应该允许片段在脚本文件旁边排队,但是没有,因此我建议不要尝试强制这样做。如果您根本不想像我一样弄乱队列或其顺序(因为我正在使用其他结合并优化脚本的插件),那么答案确实是使用wp_footer
操作,如下所示:<?php
add_action(
'wp_footer'
, function() {
?>
<script>
if (window.jQuery) {
// your snippet
}
</script>
<?php
}
, 21 # after enqueued footer scripts
);
#5 楼
您可以使用wp_footer
操作来执行此操作。检查编解码器中的wp_footer。评论
我知道,但是如何指定添加到页脚中的脚本取决于jquery。检查我的编辑更加具体。
– Saif Bechan
2011年11月6日14:14
在投票否决人们的答案之前,您是否还懒于阅读法典?您是否读过wp_enqueue_script的in_footer参数?阅读此内容:codex.wordpress.org/Function_Reference/wp_enqueue_script。它告诉您如何在wp_footer动作中使用它。
–Rutwick Gangurde
2011年11月6日15:42
评论
我知道没有内置函数可以执行此操作,这就是为什么存在wp_register_script和wp_enqueue_script,但是您可以使用jquery本身进行检查。对不起,我很抱歉,但我认为您不明白我的问题。我已经阅读了抄本,并了解该选项。但是我不想将脚本文件wp_enqueue_script放入页脚,我想向需要jquery的页脚中添加一个代码段。我否决了直接来自法典的答案。我读了抄本,却没有找到答案,所以才问一个问题。如果您再次将我重定向到法典,我将投票否决。
谢谢wyck,我认为是这种情况,谢谢您正确理解了这个问题。我想我只会使用外部JS脚本,而不是确保可以运行该脚本。