我知道我可以使用以下代码将脚本文件添加到需要jquery的wordpress的页脚中:

<?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。

评论

我知道没有内置函数可以执行此操作,这就是为什么存在wp_register_script和wp_enqueue_script,但是您可以使用jquery本身进行检查。

对不起,我很抱歉,但我认为您不明白我的问题。我已经阅读了抄本,并了解该选项。但是我不想将脚本文件wp_enqueue_script放入页脚,我想向需要jquery的页脚中添加一个代码段。我否决了直接来自法典的答案。我读了抄本,却没有找到答案,所以才问一个问题。如果您再次将我重定向到法典,我将投票否决。

谢谢wyck,我认为是这种情况,谢谢您正确理解了这个问题。我想我只会使用外部JS脚本,而不是确保可以运行该脚本。

#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