0

好的,所以这是在我的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 中添加一些内容吗?

4

1 回答 1

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,这会导致后期编辑(以及其他事情)经常在升级后中断。

于 2012-05-26T17:13:56.913 回答