WordPressでJavaScriptとスタイルを適切に追加する方法

WordPressを使い始めた当初、JavaScriptとCSSの追加は十分に簡単だと感じていました。コードをテーマやプラグインに直接ドロップして、次に進むだけでした。

しかし、長年にわたり、私たち(および多くの読者)はこのショートカットが深刻な問題を引き起こす可能性があることを苦労して学びました。スクリプト間の競合から、アップデート後にサイト全体が壊れるまで、すべて見てきました。

良いニュースは、WordPressには実際にスクリプトとスタイルをロードするための適切な方法があり、それを知れば、後々多くの頭痛の種を避けることができるということです。

このガイドでは、WordPressにJavaScriptとCSSを正しく追加する方法を説明します。カスタムテーマを作成する場合でも、最初のプラグインを作成する場合でも、これらの手順は安全かつ確実に実行するのに役立ちます。

WordPressでJavaScriptとスタイルを適切に追加する

WordPressでスクリプトとスタイルシートを追加する際のよくある間違い

多くの新しいWordPressプラグインおよびテーマ開発者は、スクリプトやインラインCSSをプラグインやテーマに直接追加する間違いを犯します。

一部の人は誤ってwp_head関数を使用してスクリプトやスタイルシートを読み込んでいます。

<?php
add_action('wp_head', 'wpb_bad_script');
function wpb_bad_script() {
echo 'jQuery goes here';
}
?>

上記のコードは簡単に見えるかもしれませんが、WordPressでスクリプトを追加する間違った方法であり、将来的に多くの競合を引き起こします。

例えば、jQueryを手動で読み込み、別のプラグインが適切な方法でjQueryを読み込む場合、jQueryが2回読み込まれることになります。それがすべてのページで読み込まれる場合、WordPressの速度とパフォーマンスに悪影響を与えます。

両者が異なるバージョンである可能性もあり、それが競合の原因となることもあります。

そういうわけで、スクリプトとスタイルシートを追加する正しい方法を見てみましょう。

WordPressでスクリプトとスタイルをエンキューする理由

WordPressには強力な開発者コミュニティがあります。世界中の何千人もの人々がWordPressのテーマやプラグインを開発しています。

すべてが正常に機能し、他の処理と競合しないように、WordPressにはエンキューシステムがあります。このシステムは、JavaScriptとCSSスタイルシートをロードするためのプログラム可能な方法を提供します。

wp_enqueue_script および wp_enqueue_style 関数を使用すると、WordPress はファイルの読み込みタイミング、読み込み場所、および依存関係を指示できます。

このシステムにより、開発者はWordPressにバンドルされている組み込みJavaScriptライブラリを利用することもでき、同じサードパーティスクリプトを複数回ロードする必要がなくなります。これにより、ページの読み込み時間が短縮され、他のプラグインやテーマとの競合を回避できます。

WordPressでスクリプトを適切にエンキューする方法は?

WordPressでスクリプトを適切に読み込むのは非常に簡単です。以下は、WordPressでスクリプトを適切に読み込むために、プラグインファイル、テーマのfunctions.phpファイル、またはコードスニペットプラグインに貼り付けることができるサンプルコードです。

?php
function wpb_adding_scripts() {
 
wp_register_script('my_amazing_script', plugins_url('amazing_script.js', __FILE__), array('jquery'),'1.1', true);
 
wp_enqueue_script('my_amazing_script');
}
  
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );  
?>

説明:

`wp_register_script()` 関数を使用してスクリプトを登録することから始めました。この関数は5つのパラメータを受け取ります。

  • $handle – スクリプトの一意の名前です。ここでは「my_amazing_script」と名付けました。
  • $src – srcはスクリプトの場所です。plugins_url関数を使用して、プラグインフォルダの正しいURLを取得しています。WordPressがそれを見つけると、そのフォルダ内でファイル名amazing_script.jsを探します。
  • $deps – depsは依存関係用です。私たちのスクリプトはjQueryを使用しているため、依存関係領域にjQueryを追加しました。サイトでまだ読み込まれていない場合、WordPressは自動的にjQueryを読み込みます。
  • $ver – これはスクリプトのバージョン番号です。このパラメータは必須ではありません。
  • $in_footer – スクリプトをフッターに読み込みたいので、値をtrueに設定しました。ヘッダーにスクリプトを読み込みたい場合は、falseにします。

wp_register_scriptですべてのパラメータを提供した後、wp_enqueue_script()でスクリプトを呼び出すだけで、すべてが完了します。

最後のステップは、スクリプトを実際に読み込むために `wp_enqueue_scripts` アクションフックを使用することです。これはサンプルコードなので、すべてを下に配置しました。

これをテーマまたはプラグインに追加する場合、スクリプトが実際に必要とされる場所にこのアクションフックを配置できます。これにより、プラグインのメモリフットプリントを削減できます。

さて、なぜスクリプトをまず登録してからエンキューするのか疑問に思う人もいるかもしれません。これは、他のサイト所有者がプラグインのコアコードを変更せずにスクリプトを登録解除できるためです。

WordPressでスタイルを正しくエンキューする

スクリプトと同様に、スタイルシートもエンキューできます。以下の例をご覧ください:

<?php
function wpb_adding_styles() {
wp_register_style('my_stylesheet', plugins_url('my-stylesheet.css', __FILE__));
wp_enqueue_style('my_stylesheet');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_styles' );  
?>

wp_enqueue_scriptの代わりに、スタイルシートを追加するためにwp_enqueue_styleを使用しています。

スタイルとスクリプトの両方にwp_enqueue_scriptsアクションフックを使用したことに注意してください。名前とは異なり、この関数は両方に機能します。

上記の例では、エンキューしたいスクリプトまたはスタイルの場所を示すためにplugins_url関数を使用しました。

ただし、テーマでスクリプトのエンキュー機能を使用している場合は、代わりにget_template_directory_uri()を使用してください。 子テーマで作業している場合は、get_stylesheet_directory_uri()を使用してください。

以下はサンプルコードです:

<?php
  
function wpb_adding_scripts() {
wp_register_script('my_amazing_script', get_template_directory_uri() . '/js/amazing_script.js', array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script');
}
  
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );  
?>

この記事が、WordPressにJavaScriptとスタイルを適切に追加する方法を学ぶのに役立ったことを願っています。実際のコード例については、トップWordPressプラグインのソースコードを調べたり、WordPressの投稿やページに簡単にJavaScriptを追加する方法に関するガイドを確認したりすることもできます。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

36 CommentsLeave a Reply

  1. この投稿は少し技術的ですが、WordPress開発に携わっているので気に入っています。PHPの使用方法や、スタイルシートとスクリプトを適切に追加する方法をさらに学ぶことができました。この記事では、将来コード間の競合が発生しないようにするためのベストプラクティスが提供されています。

  2. こんにちは。
    ここに書かれている通りにやってみたのですが、ウェブサイトが真っ白な何も表示されないページになってしまいました。何かヒントをいただけますか?
    ありがとうございます

  3. これは良いですが、私の通常の慣習は、wp_enqueue_script/style を登録せずに 1 行で追加することです。コーダーはパラメータに注意する必要があります。おそらく、それに関する簡単な説明があると役立つでしょう。たとえば、jQuery のさまざまなバージョン(あなたの jQuery スクリプトは WordPress のものとは異なるバージョンを必要とする場合があります)と、どこに追加するか(ヘッダーまたはフッター。これは true/false パラメータによって決まります)。jQuery スクリプトはヘッダーに追加する必要があります(したがって、パラメータ値として「false」を渡す必要があります)。そうしないと、機能しない可能性があります。

  4. style.css が多くなることがあります。
    enque を使用して正しいロード順序を確保し、子 CSS が最後にロードされるようにするにはどうすればよいですか?

    ドイツより乾杯
    Hansjörg

  5. register_script に空のパラメータを渡すにはどうすればよいですか?スクリプトがページの最後に読み込まれるようにしたいのですが、それがデフォルトの動作かどうかに関する情報が見つかりません。

    • こんにちは、

      素晴らしいリソースをありがとうございます。メルシー!!!

      私は少し初心者で、PHPとWordPressがJavaScriptとCSSを追加するためにwp_enqueue_scriptとwp_register_scriptをどのように使用するかを学び始めたばかりです。

      この無料プラグイン「Easy Code Manager」を使って、あなたの例を実行するのに役立てています。
      ただし、これが正しいプラグインかどうかはわかりません。

      functions.php のコードを変更するのは最善ではないと以前に読んだことがあるのですが、これは問題ないでしょうか?

      テーマのアップデートで変更されませんか?
      質問すみません、まだWordPressを学んでいます。

      ありがとう、
      ケリー

  6. Amazon広告を追加したいのですが
    テキストウィジェットに追加しようとしましたが、何も表示されませんでした。
    以下にコードを示します -

    これは私のサイトです-
    助けてください。サイトにJSを追加するにはどうすればよいですか?

  7. このプラグインを使用してJavaScriptを挿入しましたが、削除する必要があります。プラグインのアンインストールと無効化を試しましたが、JavaScriptはまだ実行されます。

  8. こんにちは、旦那様。
    私はesteemテーマを使用しており、lightboxのようなJavaScript機能をウェブサイトに追加したいと考えていました。子テーマを作成し、コードは以下の通りです。functions.phpに記述しています。

    そしてエラーが出ています:-Parse error: syntax error, unexpected '{' in E:\InstantWP_4.5\iwpserver\htdocs\wordpress\wp-content\themes\esteem-child\functions.php on line 18
    助けてください。テキストエディタはSublimeを使っています。
    助けてください!!!!!!

    • コードに予期しない { があります。functionsファイルの18行目を確認し、コードを注意深く調べてください。セミコロンを忘れるなど、ごくわずかなコードを忘れている可能性があります。

      管理者

  9. こんにちは。
    WordPressのjsディレクトリに.jsファイルを追加し、functions.phpで参照を設定しています。
    しかし、動作しません。

    wp_enqueue_script( ‘any-navigation’, get_template_directory_uri() . ‘/js/menu.js’);

  10. 本当にありがとうございます!カスタム.jsファイルを追加しようとしていましたが、register_scriptが必要であるという説明はこれが初めてです。

  11. こんにちは、素晴らしいチュートリアルです。ここで説明されているように、Google Analytics関連のJavaScriptを追加する際に問題が発生しています。
    コードからHTMLを削除した後、子テーマの「js」フォルダにスクリプトを配置しました。

    ページを読み込むと、常に次のエラーが発生します。

    ReferenceError: 変数 ga が見つかりません
    (匿名関数)myscript.js:6

    そして、‘analytics.js’ を依存関係に追加する必要があるかもしれないと、ふと気づきました!

    Does that sounds right? And if so, how would I add analytics as a dependency for my script? I’ve tried experimenting here to no avail :(

  12. 同じようなプラグインはありますか…私は初心者でコードをいじることができません…どうか助けてください、先生

  13. こんにちは。
    素晴らしい投稿チュートリアルをありがとうございます!しかし、「スクリプトをどこにアップロードするか」と言うとき、ヘッドまたはフッター(すべてのウェブページ全体!)を定義するだけですか?特定のページにロードするように定義できますか?私は1つだけで必要です。事前に感謝し、引き続き頑張ってください!乾杯。

  14. 私はJSに関しては全くの初心者ですが、HTMLはわかります。これをWordPressのページに載せたいのですが:

    基本的に、これはGoToMeetingに参加するためのウィジェットです。HTMLページのbodyにそのまま追加すれば機能しますが、WordPressでは抑制されてしまいます。
    これを機能させるための「初心者向け」バージョンを教えていただけますか?

  15. あなたのサイトは非常に役立つヒントに満ちていて大好きですが、タイトルとは異なり、CSSのエンキューを「適切に」行っていないようです :=) 正しい方法は次のとおりです。

    wp_register_style( ‘my-css-style’, get_template_directory_uri() . ‘/css/style.css’, array(), ‘1.0’, ‘all’ );
    wp_enqueue_style( ‘my-css-style’ );

    Good workを続けてください… Cheers!

  16. この記事作成の労力に感謝します。しかし、スタイルシートを読み込むためにwp_enque_scriptを使用するのは間違っているように感じます。WordPressは最終的に、それに対してスタイルシート構文ではなくスクリプトを出力する可能性があります。

    そのように埋め込みますか?

    • このチュートリアルでは、WordPressでテーマやプラグインのJavaScriptファイルとスタイルシートファイルをロードする方法を示します。埋め込み(Embed)が記事にコードを表示する方法を意味する場合、私たちはそのためにSyntax Highlighterプラグインを使用しています。

      管理者

  17. こんにちは、WordPress のテーマ作成は初めてなのですが、このトピックについて読んでいて、関連する質問をしたいと思いました。jQuery ライブラリのリンクを更新したいのですが、どうすればよいですか、またはリンクはどこで見つけられますか?試してみましたが、見つかりません。ご協力ありがとうございます。

    • jQuery ライブラリのリンクを更新するということは、Google のライブラリから jQuery を追加することを意味しますか?WordPress には jQuery が同梱されており、テーマで読み込むには、テーマにこの行を使用してください。

      <?php wp_enqueue_script('jquery'); ?>

      管理者

      • OK、つまり最新のjQueryを使いたい場合は、この行を使えばいいのですか?誰かがプラグインを使うように言いましたが、プラグインなしでやり方を学びたかったのです。

  18. 便利なサイードさん、ありがとう。
    最近、_underscoreをフレームワークとして使用してCSSファイルを読み込む際に問題が発生しました。スタイルシートはmycustomstyles.cssと呼ばれていましたが、テーマはmycustomstyles.css?ver=xxと呼び出しており、テーマはファイル名の末尾に?ver=xxを追加したことによってファイルを読み込んでいませんでした。
    それは$verのデフォルトに関連するものでしょうか?

コメントを残す

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。