Erzwinge wp_enqueue_scripts zum HEADER?

Ein Plugin, an dem ich gerade arbeite, verlangt, dass jquery geladen wird, bevor der Inhalt verarbeitet wird. Einige Aktien-Themen wie 2010, 2011 und 2012 (glaube ich) setzen das JS in den Fußbereich.

Wie kann ich erzwingen, dass die Skripte in den Header geladen werden (Ich werde die Benutzer des Plugins benachrichtigen, dass das Plugin dies benötigt)?

Solutions Collecting From Web of "Erzwinge wp_enqueue_scripts zum HEADER?"

Das normale Verhalten von wp_enqueue_script besteht darin, die Skriptausgabe in den head-Abschnitt zu stellen, der Parameter $in_footer ist optional und standardmäßig auf false . Also, Sie können jQuery mit Ihrem Plugin in den Kopf laden und, vorausgesetzt, dass Sie mit gut programmierten Themes / Plugins wp_enqueue_script , wird es nicht wieder geladen, weil wp_enqueue_script dies standardmäßig verhindert – zusätzliche Informationen dazu hier .

Der dritte Parameter von wp_enqueue_script () erlaubt Ihnen, Abhängigkeiten für das Skript, das Sie in die Warteschlange stellen, zu deklarieren, dh welche anderen Skripte für die Ausführung benötigt werden.

 add_action( 'wp_enqueue_scripts', 'include_script_that_depends_on_jquery' ); function include_script_that_depends_on_jquery() { wp_enqueue_script( 'my_script.js', '/path/to/my_scripts.js', array( 'jquery' ) ); } 

Auf diese Weise wird Ihr Skript, unabhängig davon, wo ein Thema, ein Plugin oder was auch immer geladen wird, immer später geladen, vorausgesetzt, dass sie auch den Best Practices folgen und sie nicht abmelden.

Zum Beispiel, wenn ich eine einfache jQuery (“body”) wollte. Css (“background-color”, “red”); ausgeführt von innerhalb einer Kurzwahl im Körper, kann ich es nicht tun. Nehmen wir an, mein Shortcode ist [body color = red], aber jquery wird erst in der Fußzeile geladen, dann funktioniert mein Code nicht.

In Ihrem Shortcode-Handler Sie könnten ein HTML-Platzhalterelement oder eine JavaScript-Variable zurückgeben und dann wp_footer mit einer anderen function wp_footer , die jQuery ” wp_footer “.

 function wpse_139154_shortcode( $atts ) { // Awesome code wp_enqueue_script( 'jquery' ); // Will output in the footer if not already in the head add_action( 'wp_footer', 'wpse_139154_shortcode_script', 100 ); // Ensure we run after wp_print_footer_scripts return < < var arguments = arguments || {}; arguments.backgroundColor = "{$atts['color']}";  html; } function wpse_139154_shortcode_script() { echo < <jQuery( "body" ).css( arguments ); html; } 

Entspricht der WP-Referenz für wp_enqueue_scripts

 wp_enqueue_script( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false ) 

Der letzte Parameter ist dafür verantwortlich, wo das Skript geladen wird. Es gibt einige Haken, die sein Verhalten ändern können! Versuchen Sie, diese Zeilen in Ihrer Datei function.php zu finden und zu kommentieren / zu entfernen

 remove_action('wp_head', 'wp_print_scripts'); remove_action('wp_head', 'wp_print_head_scripts', 9); remove_action('wp_head', 'wp_enqueue_scripts', 1); add_action('wp_footer', 'wp_print_scripts', 5); add_action('wp_footer', 'wp_enqueue_scripts', 5); add_action('wp_footer', 'wp_print_head_scripts', 5); 

Der Zweck dieser sechs Aktionen ist es, JavaScript-Code automatisch in den Seitenfuß zu verschieben, wodurch der letzte Parameter von wp_enqueue_scripts unbrauchbar wird! Wenn diese Aktionen nicht entfernt werden können, können Sie deren Prioritäten ändern. Von 5 bis 9999 pro Beispiel. Spiele mit den Prioritäten, um den richtigen für dich zu finden.

Sie müssen auch überprüfen, ob einige Abhängigkeiten im $ deps-Array angegeben sind. Die Ausführung des Skripts erzwingt, dass das Skript nach dem Auflösen geladen wird.

Versuche keine schmutzigen Hacks, es ist eine schlechte Übung

Glückliche Kodierung

Entnehmen Sie zuerst die jQuery, die durch das Thema eingereiht wurde. Dann reihe es wieder ein.

 function jquery_at_header() { // De-Queue current jQuery wp_dequeue_script( 'jquery' ); // Re Enqueue jQuery wp_enqueue_script( 'jquery' ); //Then your script wp_enqueue_script( 'script-name', plugins_url( 'js/scrip-name.js' , __FILE__ ), array( 'jquery' ), '1.0' ); } add_action( 'wp_enqueue_scripts', 'jquery_at_header', 5 ); 

Sie müssen möglicherweise mit der Priorität spielen, um zu bekommen, was Sie brauchen.