Ich habe dies in meiner functions.php
Datei und kann jQuery nicht in die Fußzeile laden. Die includes
Datei wird jedoch in die Fußzeile geladen. Was muss ich sonst noch tun?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
stattdessen Ihre Skript-Tags ergänzenAntworten:
Dazu müssen Sie zuerst Ihr jQuery-Skript abmelden und sich dann erneut registrieren. Wenn Sie jQuery verwenden, das mit WordPress geliefert wird, ist das Folgende die Funktion, nach der Sie suchen.
Wenn Sie eine von Google CDN gehostete Version von jQuery verwenden, teilen Sie mir mit, dass ich diesen Code für die Google CDN-URL ändern werde.
quelle
wp_enqueue_scripts
wird nur auf dem Frontend verwendet, währendadmin_enqueue_scripts
es für dasHier ist eine weitere Option, mit der vermieden wird, dass Sie sich abmelden und erneut registrieren müssen:
Diese Lösung ahmt den WordPress-Kern nach, indem sie das
group
to1
setzt. So bestimmt WordPress, ob sich ein Skript in der Fußzeile befinden soll oder nicht (mir ist der Grund dafür nicht bekannt1
, da @jgraup in den Kommentaren etwas willkürlich erscheint).quelle
wp_register_script
verwendetadd_data( $handle, 'group', 1 )
, um Skripte in die Fußzeile zu verschieben. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - Können Sie erläutern , warum das so ist? Ein Blick auf Ihren Code zeigt, dass 'group' ein bisschen willkürlich ist. Aber ich kann in core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… sehen, wie esdo_item
später in WP_Scripts-> verwendet wird . In jedem Fall scheint dies die am wenigsten destruktive Antwort zu sein.Eine bessere Lösung:
Warum ist es besser als die akzeptierte Antwort IMO
$footer = true
.Über dies nicht an den Administrator zu tun
Wenn Plugins Inline-JQuery zum wp_head hinzufügen, schlägt dies fehl, wenn JQuery zu diesem Zeitpunkt nicht geladen wird. Ich schlage daher vor, dies zu vermeiden, bis Millionen Ihre Website bearbeiten und Sie versuchen, die Leistung Ihres Administrators zu optimieren. Dies gilt auch für das Frontend. Achten Sie daher auf schlecht codierte Designs oder Plugins, die mithilfe von Inline-jQuery-Code eine Abfrage im Kopf voraussetzen. WP und Plugins registrieren andere Skripte im Admin-Kopf mit jquery in deps, so dass es meiner Meinung nach sowieso nicht funktionieren würde.
Darüber funktioniert nicht
Sie müssen sich darüber im Klaren sein, dass, wenn ein anderes Skript in den Kopf geladen wird, dessen Abhängigkeiten jQuery enthalten, jQuery auch direkt vor sich selbst in den Kopf geladen wird. Und das ist gut und zu erwarten, der Grund, warum das System wp_enqueue existiert. Dies bedeutet, dass Sie bald erfahren werden, wenn Sie einige Plugins verwenden, dass eines davon eine Abfrage des Heads erforderlich macht. Leider ist dies die Standardeinstellung für Skripte in der Warteschlange.
Radikale Lösung
Ich denke, es wird jede Inline-JS bremsen, die JQuery voraussetzt, aber sollte das selten sein. Dadurch werden alle Skripte in die Fußzeile verschoben, unabhängig davon, wie sie in die Warteschlange gestellt werden.
quelle
Ich habe ein Plugin für dieses spezielle Problem entwickelt. Dieses Plugin ist nicht mit WordPress jQuery verwirrend, da es nur im Frontend geladen wird. Siehe: jQuery Manager für WordPress
Fast jeder benutzt den falschen Griff
WordPress verwendet tatsächlich das JQuery-Core-Handle, nicht JQuery:
Der richtige Weg, es zu tun
In meinem Beispiel unten verwende ich das offizielle jQuery-CDN unter https://code.jquery.com. Ich verwende auch script_loader_tag, damit ich einige CDN-Attribute hinzufügen kann.
Sie könnten den folgenden Code verwenden:
quelle
quelle
Hey, ändere nur deinen Code, damit er dir gefällt
Ich denke, es funktioniert gut
füge diese Zeilen in deine functions.php Datei ein
Dann wird das Skript in die Fußzeile eingefügt
quelle
remove_action
/,add_action
wenn Sie dies auf diese Weise tun.