将javascript添加到unctions.php会导致模板出现问题

时间:2015-05-19 作者:square_eyes

我想要一个“阅读”链接,点击后可以移动到页面的另一部分。

I understand the HTML bitI have even used some nice scrolling.

它起作用了。但当实施时,我的部分主题就被打破了。滑块图像消失,H1文本全部聚集到左侧。

下面是我添加到子函数的内容。php,以便将javascript注入头部区域。

/**
 * Smooth scroll 
 */

add_action(\'wp_head\', \'wpse_43672_wp_head\');
function wpse_43672_wp_head(){
    //Close PHP tags 
    ?>
    //ADD YOUR PLAIN CODE HERE

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script>
    $(function() {
      $(\'a[href*=#]:not([href=#])\').click(function() {
        if (location.pathname.replace(/^\\//,\'\') == this.pathname.replace(/^\\//,\'\') && location.hostname == this.hostname) {

          var target = $(this.hash);
          target = target.length ? target : $(\'[name=\' + this.hash.slice(1) +\']\');
          if (target.length) {
            $(\'html,body\').animate({
              scrollTop: target.offset().top
            }, 1000);
            return false;
          }
        }
      });
    });
    </script>

    //STOP YOUR PLAIN CODE HERE

    <?php //Open PHP tags
}
这是如何打破我的模板的一半,但仍能很好地滚动?有更好的方法吗?

编辑:

好的,现在我正在尝试将脚本排队。

这是我的子函数中的内容。php(将js保存在文件中)。模板加载正常,但滚动未设置动画。我看不出检查员有什么错误。

function wpb_adding_scripts() {
wp_register_script(\'scroll\', get_stylesheet_directory_uri() . \'/js/scroll.js\', array(\'jquery\'));
wp_enqueue_script(\'scroll\');
}
add_action( \'wp_enqueue_scripts\', \'wpb_adding_scripts\' );
最终编辑:

这是我使用的解决方案。。。

我将其添加到子函数中。php

function wpb_adding_scripts() {
wp_register_script(\'scroll\', get_stylesheet_directory_uri() . \'/js/scroll.js\', array(\'jquery\'));
wp_enqueue_script(\'scroll\');
}
add_action( \'wp_enqueue_scripts\', \'wpb_adding_scripts\' );
我将此添加到滚动。我的子目录中js文件夹中的js文件。

(function($){

        $(function() {
    $(\'a[href*=#]:not([href=#])\').click(function() {
        if (location.pathname.replace(/^\\//, \'\') == this.pathname.replace(/^\\//, \'\') && location.hostname == this.hostname) {

            var target = $(this.hash);
            target = target.length ? target : $(\'[name=\' + this.hash.slice(1) + \']\');
            if (target.length) {
                $(\'html,body\').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }
    });
});

})(jQuery);
事实上,我遇到了一个js错误,需要添加一个noConplict wrapper.

1 个回复
最合适的回答,由SO网友:Tarei SuperChur King 整理而成

jQuery已经加载了WordPress,因此您不需要<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

将jQuery与WordPress结合使用时,可能不需要冲突包装器:https://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_Wrappers

您的浏览器控制台中可能会输出JS错误,因此向我们提供有关错误的更多信息也很有用。

肯定有a better way - 从本Javascript排队指南开始,您可以更好地理解WP脚本:http://www.wpbeginner.com/wp-tutorials/how-to-properly-add-javascripts-and-styles-in-wordpress/

结束

相关推荐

如何在保存一篇WooCommerce帖子或一篇帖子之前执行一个javascript函数?

我正在从事这个项目,在保存帖子之前,我正在尝试执行jquery或javascript,我尝试了以下方法: function do_something_with_a_post($id) { <script>alert(\'hello\');</script> } add_action(\'pre_post_update\', \'do_something_with_a_post\'); 但它给出了一个php错误。。。我真的不知道该怎么