teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/07/25 16:32

投稿

kaz.Suenaga
kaz.Suenaga

スコア2042

answer CHANGED
@@ -7,4 +7,62 @@
7
7
  [wp_register_script](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_register_script)
8
8
  [wp_enqueue_script](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_enqueue_script)
9
9
 
10
- なお、ハンドルや依存関係の処理等をしないのであれば、`wp_enqueue_script` だけの利用でも構いません。
10
+ なお、ハンドルや依存関係の処理等をしないのであれば、`wp_enqueue_script` だけの利用でも構いません。
11
+
12
+ ----
13
+ # 追記
14
+
15
+ よみこむJavaScriptを仮に
16
+
17
+ - proccess.js
18
+
19
+ とします。
20
+ このJavaScriptが動くためには別のスクリプト、
21
+
22
+ - required.js
23
+
24
+ が必要なものとします。
25
+ ※実際はJavaScriptそれぞれのフルパスが必要になりますが、その辺は省略させてください。
26
+
27
+ この際、 `wp_enqueue_script` だけで書く場合、
28
+
29
+ ```PHP
30
+ function output_script()
31
+ {
32
+ wp_enqueue_script('required', 'required.js');
33
+ wp_enqueue_script('process', 'process.js', array('required') );
34
+ }
35
+ add_action( 'wp_enqueue_scripts', 'output_script' );
36
+ ```
37
+
38
+ これで、出力のために2つの JavaScript がキューに入れられ、その他の処理でキューに入れられるJavaScriptと合わせて、適切な読み込み順序にWordPressが自動的に調整したうえで、出力されます。
39
+
40
+
41
+ これを `wp_register_script` を使う場合に書き換えると、
42
+
43
+ ```PHP
44
+ // 事前の段階で実行される処理として
45
+ wp_register_script('required', 'required.js' );
46
+ wp_register_script('process', 'process.js' , array( 'required' ) );
47
+
48
+ // この処理では使わないJavaScriptでも一覧化、依存関係管理ができます。
49
+ wp_register_script('othere-process', 'othere-process.js' , array( 'required' ) );
50
+
51
+
52
+ // -----
53
+
54
+ function output_script()
55
+ {
56
+ wp_enqueue_script('process');
57
+ }
58
+ add_action( 'wp_enqueue_scripts', 'output_script' );
59
+ ```
60
+
61
+ これで、事前に `wp_register_script` で登録されている同名のハンドルのスクリプトが、依存関係が解決された形で読み込まれ、出力されます。
62
+
63
+
64
+ - スクリプトの管理
65
+ - スクリプトの読み込み
66
+
67
+ を分けて処理がかける、ということです。
68
+ こうすると、ハンドル名 `process` がそのスクリプトであると管理されているので、仮に `process` が複数の箇所で読み込まれていたとして、読み込むスクリプトが `new-process.js` に変更になったとしても、1か所の修正ですべてに反映できます。