Warning: session_save_path(): Cannot change save path when headers already sent in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 2

Warning: session_start(): Cannot start session when headers already sent in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 3

Warning: session_regenerate_id(): Cannot regenerate session id - session is not active in /home/yqual/s-yqual.com/public_html/s-yqual/public/yqual/wp-content/themes/yqual/session.php on line 5
プログラミング

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ポケモン「アクション制御編」27
プログラミング
JavaScript,jQuery,PHP,PHPポケモン,ポケモン
PHPポケモン「アクション制御編」27

  今回のPHPポケモンでは主に画面の作り込みをしていきます。 とは言っても、ガッチリCSSを書いてよりゲームらしい見た目にするわけではなく、あくまで「ゲームシステムを再現するため」だけに整えていくのが目的です。   ということで、今回はPHPよりもBootstrapさんとjQueryさんに活躍してもらいます。   ...

連続攻撃技と一撃必殺技編 PHPポケモン39
プログラミング
PHP,PHPポケモン,ポケモン
連続攻撃技と一撃必殺技編 PHPポケモン39

連続攻撃技とは 追加効果だけでは処理できない技が、初代に限定していても数多くあります。その一つが「連続攻撃技」です。  連続攻撃技 https://wiki.ポケモン.com/wiki/連続攻撃技 連続攻撃技はさらに4パターンに分かれる。 攻撃回数が2回固定であるもの 攻撃回数が3回固定であるもの 攻撃回...

SEOで強いURLとは?安易に決めると危険だった!「よく分かるSEO対策」パーマリンク編
SEO対策
WordPress,ブログ
SEOで強いURLとは?安易に決めると危険だった!「よく分かるSEO対策」パーマリンク編

  パーマリンクの設定ってSEO対策に関係あるの?   意外と気になっているポイントではないでしょうか。実は、URLとSEO対策には全くの無関係ではなく、安易に決めてしまうとせっかく積み上げた資産的価値を台無しにしてしまうかも知れない危険なポイントでもあるのです。   今回は、ブログの収益化を目指...

データベース定義は超重要!システム開発を始める前に知っておきたい構造と構成の考え方
プログラミング
MySQL,データベース,プログラミング学習
データベース定義は超重要!システム開発を始める前に知っておきたい構造と構成の考え方

  システムやアプリ開発をする場合、そのほとんどでデータベースを使用しますね。 それぞれのデータを連携させるためにも、その構造をどうするかは重要で、設計が甘ければシステムそのものの保守性はもちろん、想定していた仕組みを実現するのが難しくなることもあります。   今回は、これからデータベースを...

フリーランス必見!良質案件を獲得するための3つのプロセス
フリーランス
フリーランス必見!良質案件を獲得するための3つのプロセス

  「良い案件に巡り会えない」 「なかなか仕事が受注できない」   駆け出しフリーランスや、これから独立しようと考えている人が直面する大きな悩みの1つですね。 ですが、意外にも自分でその案件自体を制限していたり、良質だった案件を自らで質を下げてしまっているというケースは少なくありません。...

捕獲処理実装編 PHPポケモン 80
プログラミング
PHP,PHPポケモン,ポケモン
捕獲処理実装編 PHPポケモン 80

捕獲処理の作成 前回モンスターボールのクラスを作成したので、今回は捕獲判定までの一連の処理を仕上げていきます。サービス自体は他のアイテムと一緒にするためItemServiceを呼び出し、その中で使用されたアイテムを判断して分岐を作ります。   バトル中のアイテムサービス(/App/Services/Battle/ItemService.ph...

HTMLの基本設計「よくわかるSEO対策」構造化(マークアップ)編
SEO対策
HTML,SEO,マークアップ
HTMLの基本設計「よくわかるSEO対策」構造化(マークアップ)編

  HTML5がリリースされて随分経ちました。 それにより多くのタグが増え、それにより今までデザインを目的と使用されていたものが「構造化」という本来の役割を持たされるようになりました。    構造化は、目に見えにくい部分です   それぞれの役割を理解していなければ、せっかくきれいなサ...

システムエンジニアとプログラマーの違いって?仕事内容や必要スキルについてわかりやすく解説します【SE・PG】
プログラミング
システムエンジニアとプログラマーの違いって?仕事内容や必要スキルについてわかりやすく解説します【SE・PG】

  システムエンジニアってどんな仕事? プログラマーとどう違うの?   プログラミング教育が必修化になり、SEやPGの職業が注目された今、この違いについてわからない、教えて欲しいという質問が後を絶ちません。 今回はそういった人たちのために、システムエンジニア(SE)とプログラマー(PG)という職業に...

カテゴリ

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

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO 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 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力