wp_enqueue_script()対wp_enqueue_script()でwp_register_script()を使用する場合


55

あなたがいつ使う必要があるか理解できませんwp_register_script()。現在、私は次のようなものを使用しています:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

私は多くの読書をしました(コーデックス、ブログなど)が、最初に登録する必要があるか、いつエンキューするだけなのかを理解できません。例として、TwentyTwelveはスタイルやスクリプトを登録せず、それらをキューに登録するだけであることに気付きました。

回答:


50

wp_register_script()コーデックスページには、文字通りの言葉:

後で使用するためにWordPressでJavaScriptを安全に登録する方法wp_enqueue_script()

つまり、スクリプトを登録したいが、ページに直接ロードしない場合は、ファイルを一度登録して、必要なときにロードすることができます。

例えば:

一部の機能をロードするswitchステートメントがありますが、3つのケースのうち2つは特定のjavascriptファイルを必要とし、1つは必要としません。毎回スクリプトをキューに入れることができますが、より多くのリソースが必要になるか、必要なときにスクリプトをキューに入れるだけです。

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

スクリプトを登録してからキューに入れる必要はありませんがfunctions.php、コードのどこでもなく、どこかに必要なすべてのスクリプトを登録すると、コードに何らかのロジックを提供できます。

コーデックスは次のことも伝えています。

wp_enqueue_scriptsアクションを使用して、この関数admin_enqueue_scriptsを呼び出すか、管理側で呼び出します。

あなたは葉エンドでスクリプトをキューにしたい場合は、この手段バックエンドで、あなたは一度スクリプトを登録することができ、その後でフロントエンドにそれをロードするwp_enqueue_scriptと、バックエンドとでadmin_enqueue_script
この方法では、1つのテーマ、プラグイン、ウィジェットなどで同じエンキューを2回使用することはありません。


ありがとうございました。それは多くをクリアしました。TwentyTwelveは確実にロードするので、最初に登録する必要はないと思いますか?
1

確かに可能性があります。Twenty Twelveテーマは私が使用したことがないので、どのように構築されているのかわかりませんがenqueue、の代わりに理由がありregisterます。
マイクマダーン

2
その意味で、「スクリプトを毎回キューに入れるか、より多くのリソースを必要とするか、必要なときにスクリプトをキューに入れるだけです」には同意しません。サンプルコードでは、register呼び出しを削除し、代わりに複数の同等の($ src argを使用した)完全な呼び出しを行うことができwp_enqueue_style()ます。これは単にタイピングの労力を増やすだけですが、リソース要件が大きくなることはありません。正しい?
Jan-Philip Gehrcke

7
これまでのすべての説明で省略されていた1つの点は、wp_register_script()スクリプトを登録するだけで、他のスクリプトの依存関係として使用でき、直接キューに入れられることなくそれらだけでロードできることです。
-JHoffmann

1
これはそれをうまく説明していますが、この答えも読むことをお勧めします。
lowtechsun

8

wp_register_script前に使用する主な利点はwp_enqueue_scriptsCodexの次の段落で説明されています。

wp_register_script()を使用して事前登録されたスクリプトは、キューに入れられる別のスクリプトの依存関係としてリストされている場合、wp_enqueue_script()を使用して手動でキューに入れる必要はありません。WordPressは、登録済みスクリプトのハンドルを依存関係としてリストするエンキュー済みスクリプトを含める前に、登録済みスクリプトを自動的に組み込みます。

これが不要だと思う場合(たとえば、スクリプトが依存関係に関与しないことを100%確信しているため)、おそらくwp_enqueue_scripts予備的なものなしで直接使用できますwp_register_script


2

いくつかの記事を読んで、次の結論に達しました。役立つと思います。

  1. を使用してスクリプトを登録することwp_register_script()は、単に登録することです。ロードしていません。登録されたスクリプトは、を使用してキューに登録されるまでロードされませんwp_enqueue_script()
  2. 各スクリプトを同時に登録してエンキューする必要はありません。エンキューするだけです。wp_enqueue_script()関数はスクリプトを自動的に登録するため、登録は必須ではありません。
  3. ただし、次のいずれかの状況にあるときに登録する必要があります。

    a。フロントエンドで1回、バックエンドで1回(管理ページ)など、複数の場所に読み込むスクリプトが必要だとします。これで、スクリプトを一度だけ登録できます。そして、フロントエンドとバックエンドで個別にキューに入れます。エンキューとはロードを意味します。登録はロードを意味するものではありません。登録しない場合は、キューに入れた回数だけ自動的に登録されます。一方、一度登録すると、キューに何回登録しても、一度登録されます。

    b。スクリプトを他のスクリプトの依存関係として使用する場合、でキューに登録する必要はありませんwp_enqueue_script()。で登録するだけwp_register_script()です。また、でキューに登録された他のスクリプトの依存関係としてハンドル名を使用すると、自動的にキューに登録されwp_enqueue_script()ます。

    c。スクリプトを一度にロードするのではなく、必要なときにロードする場合は、後で使用するためにスクリプトを登録するだけです。ユースケースは上記に示されています。

NB私が確信している限り、CSSスタイルシートにも同じ結論を導くことができます。私は、我々が使用することができると言うことを意味wp_register_style()し、wp_enqueue_style()同じように。

ここで描かれた結論は、私自身の控除を反映していることに注意してください。私が間違っている場合は、私を修正してください。そして、あなたは別のはるかに良い結論に達したかもしれません。もしそうなら、私たちに知らせてください。知るか?おそらくあなたのものが最高です。sayingにもあるように、「多くの教義、多くの救いの方法」 :)

https://ansrthemeaction.blogspot.com/2019/11/wpregisterscript-when-to-use.html


あなたの説明は私が読んだ中で最高です。これで、スクリプトを登録することが重要である理由がわかりました。ありがとうございました!
ジー

本当にありがとう@Jee
Mohammad Shohel Rana
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.