web-dev-qa-db-ja.com

JQueryまたはPrototypeが別のプラグインによってキューに入れられているかどうかを確認するためのテスト

私のプラグインでは、jQueryまたはPrototype(あるいはその両方)が別のプラグインによってロードされるのかどうかをテストする必要があります。そのため、 wp_enqueue_script('jquery') またはwp_enqueue_script('prototype')が既に呼び出されています。

私は自分のプラグインに適したコードをファイルplugin.prototype.jsplugin.jquery.jsに持っています、そしてPrototypeがキューに入れられているなら、私のプラグインはplugin.prototype.jsを使います。こうすれば私は必要以上に場所に荷を積むことを避ける。どちらもロードされていない場合は、小さい方のキューに入れます。

キューに入っているものを確認するにはどうすればテストできますか?コードが最後に実行されるようにするにはどうすればよいですか。

5
artlung

スクリプトがキューに入っているかどうかを確認するには、wp_script_is()を使用します。

function add_my_scripts() {
    $doing_jquery = wp_script_is('jquery', 'queue');
    $doing_prototype = wp_script_is('prototype', 'queue');

    var_dump($doing_jquery, $doing_prototype);
}
add_action('wp_print_scripts', 'add_my_scripts');
11

JQueryまたはPrototypeがロードされた後にコードが確実に実行されるようにするには、$depsパラメーターをwp_enqueue_scriptに使用し、array('jquery')またはarray('prototype')を渡します。スクリプトがキューに入っているかどうかを知りたい場合は、 WP_Dependenciesquery()メソッドを使用できます。 WP_Scripts )のスーパークラスです。したがって、このようなものでうまくいくはずです。

global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');

もちろん、プラグインを選択した後でプラグインがそれらをエンキューする可能性があるので、可能な限り最後にこのチェックを実行するようにしてください。

2
Jan Fabry