プログラミング

WordPressのJSファイル読み込みで覚えておきたい便利ワザを2つ紹介します

jQuery PHP WordPress
WordPressのJSファイル読み込みで覚えておきたい便利ワザを2つ紹介します

 

JSファイルを読み込むときに、deferasyncを付与したい・・・

get_template_directory_uri()JSファイル内で使用したい・・・

 

WordPressには便利な関数が沢山用意されていますが、その全てが万能だということはありません。

今回はSEO対策でも必要になるdeferやasyncをスクリプトタグに付与させる方法と、テンプレートまでのパスをJSファイル内でも簡単に取得できる方法をサンプルコードをつけて解説します。

 

 

wp_enqueue_scriptを使った読み込み

 

WordPressCSSファイルやJSファイルを読み込む場合、ヘッダーまたはフッター部分に直接記載する方法functions.phpにアクションフックを記載するという方法2つがあります。

 

ではまず、JSファイルの読み込みをするためのアクションフックの基本的な記述方法を見てみましょう。

// JSの読み込み

function scriptInclude(){

              wp_enqueue_script('common-script', get_template_directory_uri() . '/assets/js/common.js', [], date('U'), true );

}

add_action( 'wp_enqueue_scripts', 'scriptInclude' );

 

scriptIncludeという自作関数を作成し、最後のadd_actionでwp_enqueue_scriptsにフックしています。

 

引数の詳細については、以下のURLを参考にしてください。

 

引数によって色んな指定が可能ですが、状況によって必要になるパラメータを付与できないのが難点です。

ですが、フィルターフックを使用することによってこれを可能にします。

 

 

deferまたはasyncを付与する

 

SEO対策も考慮して、一部のJSファイルにはdeferやasyncなどのパラメータを付与したいですね。

ですが、先ほどのwp_enqueue_scriptだけではできないので、script_loader_tagというアクションフィルターを使用してスクリプトタグの記述を書き換えます。

 

今回はdeferを付与するサンプルを公開します。こちらもfunctions.phpへ記述してください。

// deferの付与

function addDefer($tag, $handle) {

              $handles = ['common-script'];

              if(in_array($handle, $handles, true)) {

                            return str_replace(' src=', ' defer src=', $tag);

              }

              return $tag;

}

add_filter('script_loader_tag', 'addDefer', 10, 2);

 

指定したハンドルに該当する場合は、deferを付与するという内容です。

今回if判定でin_arrayを使用しているのは、もし複数のハンドルを指定する場合や追加のスクリプトタグが必要になったときに手間がかからないため、保守の面から見ても良いからです。

 

str_replaceの部分で、$tagに格納されているスクリプトタグの【src=】という部分を【 defer src=】に書き換えています。こうすればdeferasyncの追加は簡単にできます。

 

 

idやdataをもたせる

 

scriptタグに対してIDや、dataを持たせることができればPHPで使用している変数の値をJSファイル内に渡せるので便利です。

ですが、こちらもwp_enqueue_scriptだけでは付与できないので、前項でdeferを追加したときと同様のアクションフィルターを使用して付与します。

 

 

テーマまでのパスを取得

 

WordPressの場合、JSファイル内で画像のパスを指定するのが少し面倒です。相対パスにするわけにいかないため、絶対パスで記述することになりますが、テーマファイルまでのURLを毎回コピペしていれば可視性も保守性も悪くなります。

 

なので、get_template_directory_uri()で取得したURLをdataへセットします。

return str_replace('>', ' id="'.$handle.'" data-temp_path="'.get_template_directory_uri().'">', $tag);

先ほどのサンプルコードのreturn部分を変更しました。

こうすることでidにハンドル名が設定でき、data-temp_pathget_template_directory_uri()で生成したパスをセットすることができます。

 

あとはこれを、JSファイル側で受け取るだけです。

今回はWordPressのためjQueryを使用したサンプルコードになります。

// get_template_directory_uri()で生成したパスを取得する関数
var getTempPath = function(){

              var temp_path = $('#common-script').data('temp_path');

}


// 作成した関数をまとめて発火
jQuery(function($){

              getTempPath();

});

 

 

まとめ

 

いかがだったでしょうか。

今回は「WordPressのJSファイル読み込みで覚えておきたい便利ワザ」について解説しました。

 

WordPressを使ったサイト制作やブログの立ち上げをする際、SEO対策や保守効率をあげるためには便利なので、ぜひ参考にしてくださいね。

 

注目の記事

PHPポケモン「タイプ実装編」15
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「タイプ実装編」15

ポケモンのタイプについて  2020年剣盾シリーズでのポケモンでは、全18タイプが実装されています。初代では15タイプ(あく、はがね、フェアリーを除く)からスタートして、たった3つのタイプしか増えていない、と感じる方もいるかも知れませんが、この追加に関してもバトルの歴史を大きく動かしてきたのです...

今からできる!ブログのアクセスを爆UPさせる3大SNS活用法
マーケティング
Facebook,Instagram,Twitter,ブロガー,ブログ
今からできる!ブログのアクセスを爆UPさせる3大SNS活用法

  ブログを収益化させたいけど、なかなかアクセス数が増えない 記事の質は高いのに、その良さをどうやって伝えれば良いかわからない   SEO対策をする上でも、収益化するためにも記事のクオリティは重要です。 しかし、せっかく良い記事を書いていても、そのブログや記事の存在を伝えることができなけれ...

パーティー実装編 戦闘に参加するポケモン PHPポケモン64
プログラミング
PHP,PHPポケモン,ポケモン
パーティー実装編 戦闘に参加するポケモン PHPポケモン64

先頭のポケモンを選出 前回パーティーのプロパティを準備して、複数(6匹)のポケモンを持ち歩けるようにすることを想定しました。 今回は、そこからバトル画面への連動をさせる部分までを作り込んでいきましょう。   複数のポケモンを所有している場合、戦闘が始まって繰り出されるのは「ひんし状態を除く一番上...

EC-CUBE4内にWordPressを設置(共存)する方法
SEO対策,プログラミング
EC-CUBE4,PHP,Symfony,Twig,WordPress
EC-CUBE4内にWordPressを設置(共存)する方法

今回使用したバージョン EC-CUBE4.0.5 WordPress5.6 ※EC-CUBE4、WordPressのカスタマイズは自己責任でお願いします。また、現在稼働中のサイトで試す際には、必ずバックアップを取ってから行なうようにしてください。   EC-CUBE4とは ネットショップを作るとなれば、様々なサービスが出回っ...

PHPポケモン「コントローラー編」〜POSTとSESSIONの活用〜 10
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「コントローラー編」〜POSTとSESSIONの活用〜 10

  今回のPHPポケモンでは、今まで作った機能用のコントローラーになるインターフェースを作成します。ポケモンやメソッドを選択できるようにして、よりゲーム性の高いアプリケーションを実装しましょう。   第1回から学習したい方はコチラ     コントローラーの実装   それでは実装したアクション...

そらをとぶ&あなをほる編 PHPポケモン46
プログラミング
PHP,PHPポケモン,ポケモン
そらをとぶ&あなをほる編 PHPポケモン46

チャージ中の回避技 以前は「ロケットずつき」や「ソーラービーム」をサンプルとしてチャージ技を実装しましたが、今回は少し特別な効果をもったチャージ技を実装します。それが「そらをとぶ」と「あなをほる」です。これらは初代ポケモンでも重宝される技であり、チャージ中に相手からの攻撃を回避することができま...

有料ノートが公開停止!?プラットフォーム依存の危険性とは
雑記
note,YouTube,ブログ
有料ノートが公開停止!?プラットフォーム依存の危険性とは

  「いままでのnoteがいきなり公開停止になった」 「YouTubeであげていた人気動画が削除された」   規約変更、違反などを理由にこういった被害は年々増えています。自覚して悪意あるコンテンツを作っているユーザーであれば当然の結果だと言ってしまえば済むことですが、努力して収益化する糸口を見つけ...

PHPポケモン「バトルシステム編〜状態異常1〜」30
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「バトルシステム編〜状態異常1〜」30

状態異常チェック 今回は少し先延ばししていた状態異常判定を一部作成していきましょう。 状態異常では「行動前」と「行動後」に判定するものに分けることができます。 行動前 まひ、ねむり、こおり  行動後 どく、もうどく、やけど   まずは簡単な行動前から実装していきます。行動前に判...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach fortify function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jetstream jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 認証 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力