Unerwarteter Ladezustand des Skripts

Ich versuche, Skripts in einer bestimmten Reihenfolge zu laden und erhalte unerwartete Ergebnisse. Ich benutze dieses Skript:

function tallulah_scripts() { wp_enqueue_script( 'header-js', get_template_directory_uri() . '/js/header.min.js', null, '1.0', false ); wp_deregister_script('jquery'); wp_enqueue_script( 'footer-js', get_template_directory_uri() . '/js/footer.min.js', null, '1.0', true ); wp_enqueue_script( 'jquery', get_template_directory_uri() . '/js/jquery.min.js', null, '2.1.0', true ); } add_action( 'wp_enqueue_scripts', 'tallulah_scripts'); 

… und wenn ich die Seite lade, erscheinen die Skripte wie folgt:

      

Seltsam richtig? Wie würde ich FORCE footer.min.js zuerst laden? Ich habe versucht, die Abhängigkeit so einzustellen:

 wp_enqueue_script( 'jquery', get_template_directory_uri() . '/js/jquery.min.js', 'footer-js', '2.1.0', true ); 

..aber es scheint keine Wirkung zu haben. Irgendwelche Hinweise bitte?

Solutions Collecting From Web of "Unerwarteter Ladezustand des Skripts"

Einfache Lösung

Der Grund, warum Ihr Code nicht funktioniert, liegt daran, dass der dritte Parameter der function wp_enqueue_script() ein Array erwartet, keine Zeichenfolge.

Ersetzen Sie 'footer-js' durch ein array('footer-js') und es wird funktionieren:

 function tallulah_scripts() { wp_enqueue_script( 'header-js', get_template_directory_uri() . '/js/header.min.js', null, '1.0', false ); wp_deregister_script('jquery'); wp_enqueue_script( 'footer-js', get_template_directory_uri() . '/js/footer.min.js', null, '1.0', true ); wp_enqueue_script( 'jquery', get_template_directory_uri() . '/js/jquery.min.js', array('footer-js'), '2.1.0', true ); // Note the footer-js dependency } add_action( 'wp_enqueue_scripts', 'tallulah_scripts'); 

Alternative Lösung

Der seltenere (und nicht so empfohlene) Weg, um damit fertig zu werden, besteht darin, Ihren eigenen Tag auszugeben, um jQuery wo immer Sie möchten, wörtlich mit einzuschließen.

Der erste Schritt besteht darin, jQuery aus dem Array der globalen Skripte zu entfernen, kurz bevor WordPress es verarbeiten wird. print_scripts_array wir den Filter-Hook print_scripts_array und löschen den jQuery-Eintrag aus dem Array.

Der zweite Schritt besteht darin, ein benutzerdefiniertes -Tag anzugeben, das auf das jQuery-Skript verweist. Es könnte mit einem beliebigen Aktions-Hook wiederholt werden oder sogar manuell in eine Vorlage wp_footer werden (nicht empfohlen). In diesem Beispiel verwende ich wp_footer hook mit einer niedrigen Priorität, so dass das Skript nach allen anderen Elementen eingefügt wird, die mit wp_footer (im Grunde am Ende der Seite).

 // Force remove default jQuery add_filter('print_scripts_array', 'remove_jquery'); function remove_jquery($scripts) { $key = array_search('jquery', $scripts); if ($key !== false) { unset($scripts[$key]); } return $scripts; } // Print custom jQuery wherever you want add_action('wp_footer', 'print_custom_jquery', 200); function print_custom_jquery() { echo ''; } 

Sehen Sie sich die folgende URL an: http://www.trembl.org/codec/832/

Es besagt, dass die Aktion wp_enqueue_scripts einen dritten Parameter (Priorität) hat

– BEARBEITEN –

Wenn Sie ein Skript nach den anderen laden müssen, tun Sie Folgendes:

 function load_latests_scripts() { wp_enqueue_script( 'footer-js', get_template_directory_uri() . '/js/footer.min.js', null, '1.0', true ); // ... other scripts } add_action('wp_enqueue_scripts', 'load_latests_scripts', 1); // 1 is smaller than the default 10. 

Wenn Sie ein Skript vor den anderen laden müssen, tun Sie Folgendes:

 function load_first_scripts() { wp_enqueue_script( 'header-js', get_template_directory_uri() . '/js/header.min.js', null, '1.0', false ); // ... other scripts } add_action('wp_enqueue_scripts', 'load_first_scripts', 20); // 20 is bigger than the default 10.