我如何使用wp_enqueue_script?

时间:2012-05-26 01:11:49

标签: php javascript wordpress wordpress-theming

好的,所以这是在我的functions.php文件中:(以下是使用酷的答案的编辑版本。我之后会离开原版:

function mdg_setup_scripts() {
  wp_register_script( 'hoverIntent', get_bloginfo('template_url').'/js-custom/hoverIntent.js', array( 'jquery' ));
  wp_enqueue_script( 'hoverIntent' );
  wp_register_script( 'mdMenuAnimation', get_bloginfo('template_url').'/js-custom/mdMenuAnimation.js', array( 'jquery' ));
  wp_enqueue_script( 'mdMenuAnimation' );
}
add_action( 'wp_enqueue_scripts', 'mdg_setup_scripts' );

这是我原来的:

function mdg_setup_scripts() {
  wp_register_script( 'hoverIntent',
    get_bloginfo( 'template_url' ) . '/js/hoverIntent.js',
    array( 'jquery' ),
    false,
    true );
  wp_register_script( 'mdMenuAnimation',
    get_bloginfo('template_url') . '/js/mdMenuAnimation.js',
    array( 'jquery', 'hoverIntent' ),
    false,
    false );
  if (!is_admin()) {
    wp_enqueue_script( 'mdMenuAnimation' );
  }
}
add_action( 'init', 'mdg_setup_scripts' );

js文件出现在指定的文件夹中。 但是前端没有加载任何JavaScript。 我做错了什么,但是什么? 我是否需要注册jquery(我认为WP中有jquery)? 我是否需要将入队呼叫分开?我需要在header.php中添加一些内容吗?

1 个答案:

答案 0 :(得分:4)

你不需要添加jquery。如果没有添加它,并且你的自定义脚本依赖它(就像你在代码中写的那样),它将被wordpress添加。 这段代码可以使用(我只测试了它),但是......

而不是:

if (!is_admin()) {
    wp_enqueue_script( 'mdMenuAnimation' );
}

wordpress注意到你使用了钩子:

  

Wordpress-codex:使用wp_enqueue_scripts操作调用此函数,或使用admin_enqueue_scripts在管理端调用它。

所以它应该是这样的:

function my_scripts_method() {
   wp_register_script( 'somehover', get_bloginfo('template_url').'/js-custom/hoverIntent.js', array( 'jquery' ));
   wp_enqueue_script( 'somehover' );
}  

add_action('wp_enqueue_scripts', 'my_scripts_method');
  

Wordpress-codex:通过使用wp_enqueue_scripts钩子(而不是许多文章引用的init钩子),我们避免在管理页面上注册备用jQuery,这将导致后期编辑(以及其他事情)经常在升级后中断。