无法在我的模板文件中运行jQuery脚本

时间:2013-10-02 作者:Derfder

我真的想在我的模板文件中运行一个简单的代码。

E、 如果我在我的页面上放了这样的东西。php:

<script type="text/javascript">
    jQuery(document).ready(function($) {
        alert("Hello world!");
    });
</script>
它不起作用了。

但简单的javascript正在发挥作用:

<script type="text/javascript">
        alert("Hello world!");
</script>

Why is jQuery blocked in WP to be included in template files?

也许还有更重要的问题

WHERE IN THE WP SETTINGS CAN I RE-ENABLE THIS?

我知道我可以使用wp\\u register\\u脚本等,但在我的场景中,我需要在模板文件中粘贴简单的javascript代码。

How to allow load jQuery code snippets in WP template\'s file too?

为什么它甚至被封锁了?

3 个回复
最合适的回答,由SO网友:sri 整理而成

我认为jQuery脚本在默认情况下不会与WordPress模板一起排队。因此,您应该将jQuery脚本放在页眉/页脚中,以便代码段正常工作。

SO网友:Chip Bennett

WordPress不会在模板(前端)中自动将jQuery排队。主题必须这样做。

将jQuery排入模板队列的正确方法是将回调添加到wp_enqueue_scripts, 像这样:

function wpse116473_enqueue_scripts() {
    if ( ! is_admin() ) {
        wp_enqueue_script( \'jquery\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse116473_enqueue_scripts\' );
wp_enqueue_scripts 通过wp_head 操作,该操作由wp_head() 模板标记(通常在header.php), 回调将在模板中的所有上下文中执行。例如,如果只想将脚本排入特定页面模板中的队列,则有两个选项:

在上述回调中使用条件包装,例如:

function wpse116473_enqueue_scripts() {
    if ( ! is_admin() ) {
        if ( \'template-foobar.php\' == get_page_template() ) {
            wp_enqueue_script( \'jquery\' );
        }
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse116473_enqueue_scripts\' );
打电话就可以了wp_enqueue_script() 直接在模板中,在输出脚本之前,例如:

wp_enqueue_script( \'jquery\' );
<script type="text/javascript">
    jQuery(document).ready(function($) {
        alert("Hello world!");
    });
</script>
自WordPress 3.4(IIRC)以来,脚本可以内联排队,这使得定位它们所排队的上下文更加容易。(这是一种很好的方法,例如,滑块模板零件文件。)

SO网友:Dan

您可以在functions.php 文件:

function my_scripts_method() {
    wp_deregister_script( \'jquery\' );
    wp_register_script( \'jquery\', \'http://code.jquery.com/jquery-latest.js\');
    wp_enqueue_script( \'jquery\' );
}    

add_action(\'wp_enqueue_scripts\', \'my_scripts_method\');

结束