4

刚刚接手了一个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 中正确添加这些脚本。

如何找出哪个脚本依赖于其他脚本?喜欢打电话给他们的正确顺序吗?

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

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

4

2 回答 2

4

避免资产冲突的最佳方法是正确地对文件进行排队。为此,您必须使用wp_enqueue_script

一个好的方法是把它作为函数的一部分放在你的functions.php文件中,就像这样

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

所以 -

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');

在此示例中,该函数load_scripts()将在 header.php 文件中调用。看看wp_register_script以及更好地理解它的论点,但总而言之 -

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

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

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


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


add_action 函数参数:

第一个参数:你“挂钩”的函数

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


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

于 2013-09-26T20:45:56.873 回答
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' );

?>
于 2013-09-26T13:18:07.767 回答