WordPressでJavaScript(jQuery)動かない時の読み込み方法

man

困ってる人
作ったサイトをWordPress化してみたんだけど、なぜかJavaScript(jQuery)が読み込まれない
何で動かないんだろう
普段は問題なく動いてるんだけどなぁ

こんにちは、ヨロと申します。

今回の内容は、jQueryでのアニメーションが沢山あるようなランディングページ(LP)を作る際に起こる事で、

いざ、LPにWordPressを組み込んでみたところ、なぜかJavaScriptが動かない、

といった場合の対策方法をまとめてみました。

WordPressでJavaScript(jQuery)が動かない、読み込みが出来ない場合

まずは、原因を特定するところから始める:デベロッパーツールでJavaScript(jQuery)のエラーを確認

まず、今回WordPressでJavaScript(jQuery)が読み込めない場合に確認する点は3つ。

  • JavaScriptの読み込みが出来ない原因を特定
  • JavaScriptファイルの読み込み方法について
  • WordPressでのjQueryの書き方について
  • まずは始めに、どこに原因があるのかを調べて、一つ一つ問題を潰していく必要があるので、

    まずは「Google Chrome」「デベロッパーツール」を使って、きちんとJavaScriptのファイルが読み込まれているかを確認し、何かしらエラーが出ているかを調べる。

    「デベロッパーツール」を開いて「Console」タブを確認

    ※「デベロッパーツール」を開く方法は、右クリックから、もしくはWindowsの場合は「F12」

    そうすると、何かしらエラーがある場合は、

    Failed to load resource: the server script.js:1 responded with a status of 404 (Not Found)

    や、

    GET http://*****.com/js/script.js net::ERR_ABORTED 404 (Not Found)

    などと表示されます。

    この場合はつまり「script.js」というファイルが読み込めない状態というエラーメッセージで、

    ここでもし何もエラーが出ていなければ、他の部分に問題がある可能性があるという事なので、今度は他の原因を探ってみる必要があります。

    通常のHTMLとWordPressの場合だと、jQueryの書き方が違ってたりもしますので、この場合は、そこら辺も後々確認しないといけません。

    ② WordPress(WordPress)でのJavaScript(jQuery)ファイルの読み込み方法

    例えば、ランディングページ(LP)と呼ばれる1枚で完結するようなものを作る場合は、

    「header.php」「footer.php」というものがなくても、サイト自体は作れるのですが、

    WordPressでJavaScript(jQuery)のファイルを読み込む場合、

    これらは「header.php」「footer.php」を作る作らないに限らず、

    「headの閉じタグの手前」に、

    <?php wp_head(); ?>

    そして、bodyの閉じタグの手前に

    <?php wp_footer(); ?>

    を追加する必要があります。

    例えば、普通のHTMLのまま外部ファイルを読み込む場合、(bodyの閉じタグ)の手前に、

    <script src="js/script.js"></script>
    
    <script src="js/jquery.*****.js"></script>

    これらを書くだけでOKですが、

    ただ、これらをWordPressで使用するとなると、

    <script src="js/script.js"></script>
    
    <script src="js/jquery.*****.js"></script>

    の部分を、

    <?php wp_footer(); ?>

    に置き換えて「functions.php」にファイルを読み込む記述を書かなきゃダメ。

    // WordPressでJavaScriptを読み込む際に重要
    
    <?php wp_head(); ?> と <?php wp_footer(); ?>

    この2つをきちんとHTML内(index.php)に書いておかないと「functions.php」に書かれた命令が上手く読み込まれないんですね。

    なので、これら2つは必須。

    WordPressでCSSファイルの読み込み方法

    WordPressで通常CSSファイルを読み込む場合には、HTMLのヘッダー部分に

    <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>">
    <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/responsive.css">

    でOK。

    ただ、WordPressで推奨されているのは、CSS、JavaScriptは「functions.php」に書いて読み込ませること。

    なので、CSSを読み込む場合もヘッダーにそのまま書くのではなく出来れば「functions.php」に書いて読み込ませた方がいいみたい。

    そして「functions.php」に書く内容というのが、

    // WordPressでJavaScript, CSSを読み込む記述
    
    <?php
    
    // CSSの読み込み
    function register_stylesheet() { // 読み込むCSSを登録する
    	wp_register_style('style', get_template_directory_uri().'/css/style.css');
    	wp_register_style('responsive', get_template_directory_uri().'/css/responsive.css');
    }
    
    function add_stylesheet() { // 登録したCSSを以下の順番で読み込む
    	register_stylesheet();
    	wp_enqueue_style('style', '', array(), '1.0', false); // ページの末尾で読み込ませるならtrue, head内ならfalse(デフォルトはfalse)
    	wp_enqueue_style('responsive', '', array(), '1.0', false);
    }
    
    add_action('wp_enqueue_scripts', 'add_stylesheet');
    
    
    // JavaScriptの読み込み
    function register_script() { // 読み込むJavaScriptファイルを登録
    	wp_register_script('script', get_template_directory_uri().'/js/script.js');
    	wp_register_script('*****', get_template_directory_uri().'/js/jquery.*****.js');
    }
    
    function add_script() { // 登録したファイルを以下の順番で読み込む
    	register_script();
    	wp_enqueue_script('script', '', array(), '1.0', false);
    	wp_enqueue_script('*****', '', array(), '1.0', false);
    }
    
    add_action('wp_print_scripts','add_script');

    もしくは、↓ こんな感じで短く書いて、

    // WordPressでJavaScriptを読み込む記述
    
    // JavaScriptの読み込み
    function add_script() {
        wp_enqueue_script('script', get_template_directory_uri().'/js/script.js', array(), '1.0', false);
        wp_enqueue_script('*****', get_template_directory_uri().'/js/jquery.*****.js', array(), '1.0', false);
    }
    
    add_action('wp_enqueue_scripts','add_script');

    これでもOK。

    wp_enqueue_style関数:スタイルシートを読み込む為のもの

    wp_enqueue_script関数:JavaScript(jQuery)を読み込むためのもの

    wp_enqueue_script関数は「functions.php」に記述

    「functions.php」に独自の関数を作り、その中で読み込ませ、add_actionで動作させる。

    add_actionの、wp_enqueue_scriptsはJavaScriptだけでなくCSSの呼び出しまでやってくれる。

    WordPressでjQueryが動かない!その際の書き方

    そして「デベロッパーツール」でエラーも出ないし、ファイルもきちんと読み込まれている、

    にも関わらず、jQueryが読み込まれないという場合は、jQueryの書き方に問題がある場合が多い。

    通常のjQueryの書き方だと、

    $(function() {
      この中に命令を書いていく
    });

    ただしHTMLとWordPressの場合では、jQueryの書き方が違っていて、

    WordPressでのjQueryの書き方については、

    jQuery(function($) {
      この中に命令を書いていく
    });

    こうやって書かないとダメ。

    WordPressでJavaScript(jQuery)動かない時の読み込み方法|まとめ

    という事で、最後に内容をまとめると、

  • エラーの原因を特定
  • JavaScriptファイルの読み込み方法を確認
  • WordPressでのjQueryの書き方を確認
  • これらを上から順番に潰していけば、どこかしらで原因が特定出来るのではないでしょうか?

    特にランディングページ(LP)を作る際には分割するファイルが少ないので、

    どこかしらで適当に書いちゃってその結果、ファイルが読み込まれなかったり動かないという単純なエラーが出てくるので注意。