it-swarm.dev

Prüfen Sie, ob jQuery oder Prototype von einem anderen Plugin in die Warteschlange gestellt wurde.

In meinem Plugin möchte ich testen, ob jQuery oder Prototype (oder beide) von einem anderen Plugin geladen werden. Wurde also wp_enqueue_script('jquery') oder wp_enqueue_script('prototype') bereits aufgerufen?.

Ich habe Code, der meinem Plugin in den Dateien plugin.prototype.js und plugin.jquery.js entspricht. Wenn Prototype in der Warteschlange steht, verwendet mein Plugin plugin.prototype.js. Auf diese Weise vermeide ich, mehr als nötig in die Site zu laden. Wenn keiner geladen hat, werde ich Schlange stehen, je nachdem, was kleiner ist.

Wie kann ich testen, um festzustellen, was sich in der Warteschlange befindet? Wie stelle ich sicher, dass mein Code zuletzt ausgeführt wird?

5
artlung

Verwenden Sie wp_script_is(), um zu überprüfen, ob sich ein Skript in der Warteschlange befindet.

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

Um sicherzustellen, dass Ihr Code nach dem Laden von jQuery oder Prototype ausgeführt wird, verwenden Sie den Parameter $deps für wp_enqueue_script und übergeben Sie entweder array('jquery') oder array('prototype'). Wenn Sie wissen möchten, ob sich ein Skript in der Warteschlange befindet, können Sie die Methode query() von WP_Dependencies ( verwenden, die die Oberklasse von WP_Scripts ). So etwas sollte funktionieren:

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

Natürlich können Plugins sie in eine Warteschlange stellen, nachdem Sie sich für eine entschieden haben. Stellen Sie also sicher, dass Sie diese Prüfung zum letztmöglichen Zeitpunkt durchführen.

2
Jan Fabry