it-swarm.com.de

Richtige Methode zum Ausführen von Skripten mit Abhängigkeiten ohne Enqueue?

Mit enqueue würden Sie $deps in Ihr Skript oder eine Reihe von Skripten ändern, die zuerst ausgeführt werden müssen, damit Ihr Skript funktioniert.

<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>

Zum Beispiel:

function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

Normalerweise mache ich das, aber es scheint nicht immer zu funktionieren:

function script_that_requires_jquery(){
    if ( wp_script_is( 'jquery', 'done' ) ) { ?>
        <script type="text/javascript">
        (function($) {
            // jquery function goes here    
        })( jQuery );
        </script>
    <?php }
}
add_action('wp_footer', 'script_that_requires_jquery');

Vielleicht ist es das?

function script_that_requires_jquery(){
    wp_enqueue_script( 'jquery' );
    ?>
        <script type="text/javascript">
        (function($) {
            // jquery function goes here    
        })( jQuery );
        </script>
    <?php 
}
add_action('wp_footer', 'script_that_requires_jquery');
5
Bryan Willis
function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

Dies ist die richtige Methode, um Skripte (und Stile für diese Angelegenheit) in die Warteschlange zu stellen. Sie sollten always verwenden wp_enqueue_scripts , um Skripte und Stile zu verknüpfen.

Hier sollten Sie einige Punkte überprüfen, wenn Sie Skripte und Stile registrieren. Stellen Sie zunächst sicher, dass die Reihenfolge, in der Sie sie in Ihre Funktion einfügen, korrekt ist. Das erste Skript in der Funktion wird als erstes ausgeführt, das zweite als zweites usw. Sie können also Ihr jquery-abhängiges Skript nicht vor jquery platzieren, es wird nicht funktionieren

Die andere mögliche Falle ist add_action( $hook, $function_to_add, $priority, $accepted_args ); . Ohne den Parameter $priority besteht immer die Gefahr, dass Ihr Skript/Stil vor anderen Skripten/Stilen geladen wird, die möglicherweise Ihren überschreiben.

In Ihrem Fall wird Ihr Skript möglicherweise vor jquery geladen, sodass es nicht funktioniert. Ich immer setze diesen Parameter mit einer sehr niedrigen Priorität (sehr hohen Zahl), wenn ich benutzerdefinierte Skripte und Stile hinzufüge. Dadurch wird sichergestellt, dass meine Skripte und Stile zuletzt vollständig geladen werden. Also werde ich so etwas machen

add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery', 999 );
4
Pieter Goosen

Es reicht nicht aus, jquery (oder eine andere Bibliothek) vor Ihrem jquery-abhängigen Code in die Warteschlange zu stellen, Sie müssen jedoch auch sicherstellen, dass jquery geladen ist, bevor Ihr Code vom Browser analysiert/ausgeführt wird.

0
Mark Kaplun