it-swarm-vi.tech

Kiểm tra xem jQuery hoặc Prototype có được xếp hàng bởi một plugin khác không?

Trong plugin của tôi, tôi muốn kiểm tra xem jQuery hoặc Prototype (hoặc cả hai) sẽ được tải bởi một plugin khác. Vì vậy, đã wp_enqueue_script('jquery') hoặc wp_enqueue_script('prototype') đã được gọi.

Tôi có mã phù hợp với plugin của mình trong các tệp plugin.prototype.jsplugin.jquery.js và nếu Prototype được xếp hàng, plugin của tôi sẽ sử dụng plugin.prototype.js. Bằng cách này, tôi tránh tải nhiều hơn cần thiết vào trang web. Nếu không tải, tôi sẽ xếp hàng cái nào nhỏ hơn.

Làm thế nào tôi có thể kiểm tra để xem những gì đã được xếp hàng? Làm thế nào để tôi chắc chắn rằng mã của tôi chạy cuối cùng?

5
artlung

Sử dụng wp_script_is() để kiểm tra xem tập lệnh có trong hàng đợi không.

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

Để đảm bảo mã của bạn chạy sau khi jQuery hoặc Prototype được tải, hãy sử dụng tham số $deps cho wp_enqueue_script và chuyển array('jquery') hoặc array('prototype'). Nếu bạn muốn biết liệu tập lệnh có trong hàng đợi hay không, bạn có thể sử dụng phương thức query() của WP_Dependencies ( là siêu lớp của WP_Scripts ). Vì vậy, một cái gì đó như thế này sẽ làm việc:

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

Tất nhiên, các plugin có thể thu hút chúng sau khi bạn quyết định, vì vậy hãy cố gắng đảm bảo bạn thực hiện kiểm tra này vào thời điểm cuối cùng có thể.

2
Jan Fabry