質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5158閲覧

wordpress:wp_register_scriptとwp enqueue scriptの違いとは何ですか?

makoto-n

総合スコア436

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2016/07/23 02:46

編集2016/07/25 15:05

functios.phpでJavaScriptの管理を行いたいと思っています。
調べていた際に行き詰りました。

wp_register_scriptとwp enqueue scriptの違いとは何ですか?

ちなみにですが、今までは下記の仕様で製作していました。
cssもfunctionsに書くべきだと知り、調べていくうちにぶつかりました。

php

1// タイトルタグ 2function my_setup_theme() { 3 add_theme_support( 'title-tag' ); 4} 5add_action( 'after_setup_theme', 'my_setup_theme' ); 6//jQuery 7function my_scripts() { 8 wp_enqueue_script( 'jquery' ); 9 wp_enqueue_script( 'flexnav', get_template_directory_uri() .'/js/jquery.flexnav.min.js', array( 'jquery')); 10} 11add_action( 'wp_enqueue_scripts', 'my_scripts' );

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

wp_register_script で、ハンドル(名前みたいなもの)とJavaScriptファイルの紐づけをWPに認識させ、実際にそのスクリプトを利用する箇所(フック)でそのJavaScriptを表示させるのが wp_enqueue_script です。

WPの場合処理上、出力する前に一度出力するスクリプト群をキューにためて、適切な順序で出力する処理があるため、enqueue です。

wp_register_script では依存関係も含めてWPに認識させられるので、例えばあるJSを利用するために必要となる別のJSを設定しておくことにより、wp_enqueue_script で使いたいスクリプトだけを指定すれば、必要となる依存関係のスクリプトを合わせて読み込んでくれます。

wp_register_script
wp_enqueue_script

なお、ハンドルや依存関係の処理等をしないのであれば、wp_enqueue_script だけの利用でも構いません。


追記

よみこむJavaScriptを仮に

  • proccess.js

とします。
このJavaScriptが動くためには別のスクリプト、

  • required.js

が必要なものとします。
※実際はJavaScriptそれぞれのフルパスが必要になりますが、その辺は省略させてください。

この際、 wp_enqueue_script だけで書く場合、

PHP

1function output_script() 2{ 3 wp_enqueue_script('required', 'required.js'); 4 wp_enqueue_script('process', 'process.js', array('required') ); 5} 6add_action( 'wp_enqueue_scripts', 'output_script' );

これで、出力のために2つの JavaScript がキューに入れられ、その他の処理でキューに入れられるJavaScriptと合わせて、適切な読み込み順序にWordPressが自動的に調整したうえで、出力されます。

これを wp_register_script を使う場合に書き換えると、

PHP

1// 事前の段階で実行される処理として 2 wp_register_script('required', 'required.js' ); 3 wp_register_script('process', 'process.js' , array( 'required' ) ); 4 5 // この処理では使わないJavaScriptでも一覧化、依存関係管理ができます。 6 wp_register_script('othere-process', 'othere-process.js' , array( 'required' ) ); 7 8 9// ----- 10 11function output_script() 12{ 13 wp_enqueue_script('process'); 14} 15add_action( 'wp_enqueue_scripts', 'output_script' );

これで、事前に wp_register_script で登録されている同名のハンドルのスクリプトが、依存関係が解決された形で読み込まれ、出力されます。

  • スクリプトの管理
  • スクリプトの読み込み

を分けて処理がかける、ということです。
こうすると、ハンドル名 process がそのスクリプトであると管理されているので、仮に process が複数の箇所で読み込まれていたとして、読み込むスクリプトが new-process.js に変更になったとしても、1か所の修正ですべてに反映できます。

投稿2016/07/25 15:18

編集2016/07/25 16:32
kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makoto-n

2016/07/25 15:21

wp_register_scriptで全て登録、wp_enqueue_scriptで個別に出力という形でいいでしょうか? すみません、JavaScriptをまったく理解していないもので、
kaz.Suenaga

2016/07/25 15:30

あまりJavaScriptの理解と関係ない処理でして、 - 事前に「利用するJavaScriptのリスト」を作る処理が wp_register_script - 実際に使う処理が wp_enqueue_script です。 実際に使う際に、事前に登録してある名前(ハンドル)で読み込むこともできますし、その場で読み込むものを指定することもできます。 ※そのため、wp_enqueue_script だけでも記述はできます。 事前にリストを作ることのメリットは、前述のとおりハンドル(別名みたいなものです)を自由につけられることと、依存関係を設定しておけることです。 依存関係を設定できることにより、必要なJavaScriptを1つ1つ正しい順序で wp_enqueue_script で読み込む必要がなくなり、使いたいJavaScript 1つを wp_enqueue_script で読み込むことで自動的に他の必要な JavaScript が読み込まれます。 wp_register_scrtpt は functions.php のような共通的に読み込まれる箇所で記述し、 wp_enqueue_script は各テンプレートやフックでの処理として記述されます。
makoto-n

2016/07/25 16:04

返信遅くなりすみません。 つまり、「圧縮化」であっていますか?汗 すごく漠然と解釈してしまっていますが、、
kaz.Suenaga

2016/07/25 16:13

圧縮なんて一言も言ってませんよ。 ではもう少し例示しますので、回答を追記します。 これから書きますので少し時間空きますがご了承くださいね。
makoto-n

2016/07/25 16:18

はい、失礼しました。 お願いします。
kaz.Suenaga

2016/07/25 16:37

付け加えると質問内にある wp_enqueue_script( 'jquery' ); は、WPがデフォルトで事前に wp_register_script( 'jquery' , [jQueryのURL], [依存関係] ); をやってあるからできる処理です。
makoto-n

2016/07/25 17:14

なるほど! ありがとうございます。 夜分に本当すみません!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問