1

我觉得我在这里肯定错过了一些简单的东西......但对于我的生活,我找不到我错过的东西。

我有直接在 header.php 文件中包含 jQuery 函数的“坏习惯”(在其他地方)。据我了解,这是不赞成的,函数应该保存在一个单独的文件中,使用 wp_enqueue 函数来加载它们(如果我理解正确的话)。

我正在尝试遵循此处给出的解决方案: 如何将简单的 jQuery 脚本添加到 WordPress?

我的 header.php 中有这个简单的函数,它应该在文档准备好时触发:

<script>
    // Scroll to Top
    jQuery(document).ready(function () {
        // Force element to hidden state when page loads
        jQuery('.scroll-to-top').hide();

        // Check to see if the window is top if not then display button
        jQuery(window).scroll(function () {
            if (jQuery(this).scrollTop() > 200) {
                jQuery('.scroll-to-top').fadeIn();
            } else {
                jQuery('.scroll-to-top').fadeOut();
            }
        });
        //Click event to scroll to top
        jQuery('.scroll-to-top').click(function () {
            jQuery('html, body').animate({ scrollTop: 0 }, 800);
            return false;
        });
    });
</script>

所以为了“正确”地做事,我把我的代码拿出来放在 myScripts.js 中(当然要删除脚本标签)。在我的 functions.php 文件中,我添加了以下代码:

<?php
    function add_my_script() {
        wp_enqueue_script(
            'myScripts', // name your script so that you can attach other scripts and de-register, etc.
            get_template_directory_uri() . '/js/myScripts.js', // this is the location of your script file
            array('jquery') // this array lists the scripts upon which your script depends
        );
    }

    add_action( 'wp_enqueue_scripts', 'add_my_script' );
?>

但是当我加载我的页面时,脚本不再工作了。

编辑

感谢您到目前为止的帮助...更改此行:

add_action( 'wp_enqueue_scripts', 'myScripts' );

对此:

add_action( 'wp_enqueue_scripts', 'add_my_script' );

解决了页面上看到的错误。

不幸的是,代码似乎不再在页面上触发。我假设因为它是 (document).ready 它应该自动触发(就像我直接包含它时它总是那样),但是当我以这种方式包含脚本时它不会。呃……想法?

4

1 回答 1

2

请参阅wp_enqueue_script 文档

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer) 是正确的函数。

您的第一个参数需要是回调函数名称。

于 2013-10-11T16:36:20.687 回答