0

OK、これは私の 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-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 に答える