Eine bessere Lösung:
add_action( 'wp_default_scripts', 'move_jquery_into_footer' );
function move_jquery_into_footer( $wp_scripts ) {
if( is_admin() ) {
return;
}
$wp_scripts->add_data( 'jquery', 'group', 1 );
$wp_scripts->add_data( 'jquery-core', 'group', 1 );
$wp_scripts->add_data( 'jquery-migrate', 'group', 1 );
}
Warum ist es besser als die akzeptierte Antwort IMO
- Ändert es im Kern, nicht zu einem späteren Zeitpunkt, wenn andere Dinge bereits damit zu tun hatten.
- Die Versionszeichenfolge wurde beibehalten und nicht entfernt!
- Die Registrierung eines Skripts wird nicht aufgehoben und erneut registriert, sondern es wird nur der Gruppenwert festgelegt, der im Wesentlichen dem Wert entspricht, bei dem das Skript registriert werden würde
$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.
add_action( 'wp_enqueue_scripts', 'js_to_footer' );
function js_to_footer() {
remove_action( 'wp_head', 'wp_print_scripts' );
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );
remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
}
defer
stattdessen Ihre Skript-Tags ergänzen