Wordpress主题:添加自定义脚本和jquery正确的方法

时间:2013-09-26 13:07:58

标签: javascript jquery ajax wordpress wordpress-theming

刚接手一个wordpress项目。前开发人员搞砸了主题,因此它可以防止我的ajax表单(gravityform)正常工作。 Proplem是他们在header.php中添加jquery和自定义js的方式:

    <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/jquery.easing.1.3.js"></script>
    <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/slides.min.jquery.js"></script>
    <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/script.js"></script>
    <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/tabs.min.js"></script>

我完全是wordpress主题思想的新手,如何使用wp_register_script和wp_enqueue_script在我的functions.php中正确添加这些脚本。

如何找出哪些脚本取决于其他脚本?喜欢调用它们的正确顺序?

EDIT 我通过wp_enqueue_scripts以正确的方式包含脚本。但现在我面临着奇怪的JS错误。      TypeError:$不是函数

当我用jQuery替换$时,它可以工作。但这不能成为一种解决方案。为什么会出现此错误?

2 个答案:

答案 0 :(得分:3)

避免资产冲突的最佳方法是正确访问文件。为此,您必须使用wp_enqueue_script

这样做的一个好方法是将它作为函数的一部分放在你的functions.php文件中,如此

  1. 创建一个功能
  2. wp_register_script插入函数
  3. 然后将wp_enqeue_script插入函数
  4. 使用add_action()来初始化入队过程

  5. 所以 -

    function load_scripts() {
      wp_register_script( 'script-name', get_template_directory_uri() . '/js/script.js', array( 'scriptyouwillwaittobeloaded' ) );
      wp_enqueue_script( 'script-name' );
    }
    
    add_action('wp_enqueue_scripts', 'load_scripts');
    

    在此示例中,然后将在header.php文件中调用函数load_scripts()。看看wp_register_script也可以更好地理解这些论点,但总结一下 -

    第一个参数:是您要用作此脚本的引用的名称

    第二个参数:是脚本的实际链接

    第三个参数:是要在此脚本之前加载的脚本(在此脚本加载之前要等待的脚本)


    对于wp_enqueue_script,参数只是对名称的引用(wp_register_script的第一个参数)


    add_action函数参数:

    第一个参数:你正在“挂钩”的功能

    第二个参数:你创建的函数将被“挂钩”


    要注意 - 您可以在此函数中加载任意数量的脚本,这只是加载单个脚本的示例。

答案 1 :(得分:0)

开发人员所做的只是使用一个简单的参考。如果您想将WP脚本排队,请查看wp_enqueue_script

我不相信脚本会依赖于特定版本的jquery以外的任何东西。

他们是这样做的:

<?php

function my_scripts_method() {
    wp_enqueue_script(
    'custom-script',
    get_stylesheet_directory_uri() . '/js/custom_script.js',
    array( 'jquery' )
    );
}

add_action( 'wp_enqueue_scripts', 'my_scripts_method' );

?>