私のプラグインでは、jQueryまたはPrototype(あるいはその両方)が別のプラグインによってロードされるのかどうかをテストする必要があります。そのため、 wp_enqueue_script('jquery')
またはwp_enqueue_script('prototype')
が既に呼び出されています。
私は自分のプラグインに適したコードをファイルplugin.prototype.js
とplugin.jquery.js
に持っています、そしてPrototypeがキューに入れられているなら、私のプラグインはplugin.prototype.js
を使います。こうすれば私は必要以上に場所に荷を積むことを避ける。どちらもロードされていない場合は、小さい方のキューに入れます。
キューに入っているものを確認するにはどうすればテストできますか?コードが最後に実行されるようにするにはどうすればよいですか。
スクリプトがキューに入っているかどうかを確認するには、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');
JQueryまたはPrototypeがロードされた後にコードが確実に実行されるようにするには、$deps
パラメーターをwp_enqueue_script
に使用し、array('jquery')
またはarray('prototype')
を渡します。スクリプトがキューに入っているかどうかを知りたい場合は、 WP_Dependencies
( のquery()
メソッドを使用できます。 WP_Scripts
)のスーパークラスです。したがって、このようなものでうまくいくはずです。
global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query('jquery');
$prototypeIsLoaded = (bool) $wp_scripts->query('prototype');
もちろん、プラグインを選択した後でプラグインがそれらをエンキューする可能性があるので、可能な限り最後にこのチェックを実行するようにしてください。