it-swarm-id.com

Uji coba untuk melihat apakah jQuery atau Prototipe di-antri oleh plugin lain?

Di plugin saya, saya ingin menguji untuk melihat apakah jQuery atau Prototype (atau keduanya) akan dimuat oleh plugin lain. Jadi, sudah wp_enqueue_script('jquery') atau wp_enqueue_script('prototype') telah dipanggil.

Saya memiliki kode yang sesuai dengan plugin saya dalam file plugin.prototype.js dan plugin.jquery.js dan jika Prototipe di-antri, plugin saya akan menggunakan plugin.prototype.js. Dengan cara ini saya menghindari memuat lebih dari yang diperlukan ke dalam situs. Jika tidak ada yang dimuat, saya akan antri mana yang lebih kecil.

Bagaimana saya bisa menguji untuk melihat apa yang telah antri? Bagaimana cara memastikan kode saya berjalan terakhir?

5
artlung

Gunakan wp_script_is() untuk memeriksa apakah skrip ada dalam antrian.

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
Annika Backstrom

Untuk memastikan kode Anda berjalan setelah jQuery atau Prototype dimuat, gunakan parameter $deps ke wp_enqueue_script, dan sampaikan array('jquery') atau array('prototype'). Jika Anda ingin tahu apakah skrip berada dalam antrian, Anda dapat menggunakan metode query() dari WP_Dependencies ( yang adalah superclass dari WP_Scripts ). Jadi sesuatu seperti ini seharusnya bekerja:

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

Tentu saja, plugin dapat membuat mereka enqueue setelah Anda memutuskan satu, jadi cobalah untuk memastikan Anda menjalankan pemeriksaan ini pada saat-saat terakhir yang mungkin.

2
Jan Fabry