Jquery in Footer laden statt im header

  • Hallo,

    Jquery wird ja bei Wordpress standardmäßig im <head> geladen. Aus Performance-Gründen möchte ich es jedoch im Footer laden. Hat das schon jemand erfolgreich umsetzen können? Habe hierzu folgenden Code in die functions.php eingefügt. Das Script wird jedoch weiter im Header geladen. Nutze Wordpress 4.0

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • wo steht denn da, dass jquery in den footer soll? ich lese da nur: deregistrieren und dann wieder registrieren. was soll das bringen?
    Hast Du es in den footer gepackt und im header gelöscht?

  • gericoach
    der letzte Parameter bestimmt $in_footer=true ;-)

    Luks
    ich habe es selbst mit

    PHP
    wp_enqueue_script( 'jquery', '//code.jquery.com/jquery-latest.min.js', array(), false, true );


    und auch mit

    PHP
    add_action('wp_enqueue_scripts' ...


    nie hinbekommen, bin jetzt einen Umweg gegangen:

    PHP
    // super easy way to move javascript to footer
    remove_action('wp_head', 'wp_print_scripts');
    remove_action('wp_head', 'wp_print_head_scripts', 9);
    add_action('wp_footer', 'wp_print_scripts', 5);
    add_action('wp_footer', 'wp_print_head_scripts', 5);

    Wäre aber auch an einer korrekten Lösung interessiert.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Hallo,

    hatte diesen Thread vor einem halben Jahr begonnen. Leider war er wohl ergebnislos eingeschlafen. Das Thema
    [size=10]
    Jquery in Footer laden statt im header
    [/SIZE]

    ist jedoch für mich (und wahrscheinlich auch für viele andere) immer noch aktuell. Würde gerne das Thema nochmals anstoßen. Konnte es jemand bisher erfolgreich umsetzten, oder geht es schlicht einfach nicht?

  • Hast du den Umweg von maxe gelesen und getestet?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • funktioniert verdammt gut :-)
    nutzt aber nichts, wenn ein Plugin unbedingt jquery oben braucht => slider etc... sind halt manche so gecodet ...
    ich übernehm also keine Haftung, dass da was krachen kann oder so ....

    auch keine Haftung für meine Kommentare in dieser Funktion :-)

    hast du individuelles jquery im Footer, dann sollte wp_footer unbedingt vor diesem stehen...

  • Der Vorschlag von maxe funktioniert mit allen Javascripts, außer den jquery, die bleiben leider im head stehen.
    Monika Funktioniert leider gar nicht bei mir. Die jquery bleiben im head stehen + Fehlermeldung.

  • damals hatte ich es, wie Monika es jetzt vorgeschlagen hat, schon getestet. Lief nicht. Heute teste ich es wieder, läuft.
    War vermutlich ähnlich, wie das query_posts() Problem, was derzeit einige Nutzer haben.
    Verstehen muss ich das nicht!

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Der Vorschlag von maxe funktioniert mit allen Javascripts, außer den jquery, die bleiben leider im head stehen.
    Monika Funktioniert leider gar nicht bei mir. Die jquery bleiben im head stehen + Fehlermeldung.

    welche Fehlermeldung hast du?

    nutzt du irgendein Plugin, dass jquery im html header braucht?
    (oder glaubt zu brauchen)

    oder andersrum...
    hast du es schon ohne aktivierte Plugins versucht?

    holt sich gar dein Theme unbedingt jquery in den header? => slider, tabs weiß ich was noch alles

  • damals hatte ich es, wie Monika es jetzt vorgeschlagen hat, schon getestet. Lief nicht. Heute teste ich es wieder, läuft.
    War vermutlich ähnlich, wie das query_posts() Problem, was derzeit einige Nutzer haben.
    Verstehen muss ich das nicht!

    ich hatte massive Probs bei einem ChildTheme,
    bis ich kapierte, dass die die Ordner völlig woanders hingeschickt hatten,
    also wenn der Pfad nicht stimmt, gehts so natürlich nicht ...
    hat viele graue Haare gekostet bis ich endlich mit die wp-config und htaccess angesehen hatte ...

  • Hallo Monika,

    es ist das Slider-Dropdown-Menu für die mobile Ansicht, was jquery benötigt. Sonst öffnet es sich nicht. Am besten wäre natürlich, ich finde eine Möglichkeit, dass es sich ohne Javascript ein- und ausklappen lässt. Aber da kenne ich mch zu wenig aus.

    Andere Frage: was bedeuten eigentlich dies Zahlen in der Funktion, also in diesem Fall die 9 ?
    [COLOR=#000000][COLOR=#0000BB]remove_action[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'wp_head'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]'wp_print_head_scripts'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]); [/COLOR][/COLOR]

  • Hallo Monika,

    es ist das Slider-Dropdown-Menu für die mobile Ansicht, was jquery benötigt. Sonst öffnet es sich nicht. Am besten wäre natürlich, ich finde eine Möglichkeit, dass es sich ohne Javascript ein- und ausklappen lässt. Aber da kenne ich mch zu wenig aus.

    Andere Frage: was bedeuten eigentlich dies Zahlen in der Funktion, also in diesem Fall die 9 ?
    [COLOR=#000000][COLOR=#0000BB]remove_action[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'wp_head'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]'wp_print_head_scripts'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]9[/COLOR][COLOR=#007700]); [/COLOR][/COLOR]

    das ist hier sehr einfach erklärt

    https://wp-buddy.com/de/wordpress-p…ction-funktion/

  • Ich habe das jetzt schon mehrfach gemacht, unter anderem bei http://www.perfekt-schminken.de und bei http://www.hochzeitsfotograf-luzern.ch. Anlass war immer Google Pagespeed. Praktische Auswirkungen: Enorm, erst recht in Verbindung mit asynchronem Laden von JavaScript.


    Mal zu den konkreten Erfahrungen:


    Wenn man mit wp_register_script() ein Script registriert, kann man nicht nur sagen, wo es hin soll (head, foot), sondern auch, von welchen anderen Scripts es abhängt. Man kann jQuery deregistrieren und neu für den foot registrieren - wenn ein Plugin/Theme jQuery als Abhängigkeit für eines seiner Scripts listet und sein Script im head lädt, dann lädt auch jQuery im head.


    Manchmal gibt es ja durchaus Gründe dafür, JavaScript im head zu laden. In der überwiegenden Zahl der Fälle, denen ich begegnet bin, funktionieren Scripte aber auch völlig problemlos im foot. Aber dem Autor des Plugins/Themes ist die Problematik vermutlich nicht bewusst, wp_register_script() hat head als default und dann landet eben alles im head. Trotzdem sollte man sich ungefähr angucken, was die Scripts so tun, bevor man sich die Mühe macht, sie in den Head zu verschieben.


    Wie kann man nun verschieben?


    1) Seltener Glücksfall: Das Plugin selbst bietet eine Option, sein JavaScript im foot auszugeben. Also erst mal die Plugin-Optionen checken.


    2) Man schaut sich an, welche Scripts ein Plugin registriert und hängt diese - beispielsweise aus der functions.php heraus - in den foot. Das ist nicht so simpel. Wenn das Plugin konform zum Codex entwickelt wurde, findet man die entsprechenden Stellen im Code natürlich über die Suche nach wp_register_script(), beziehungsweise das Ergebnis davon in $wp_scripts. Es gibt aber auch Plugins, die ihre JavaScripts einfach per echo irgendwo - sorry - hinrotzen. So was habe ich auch schon gelöst, aber eher "brutal" mit ob_buffer(), DomNode und Xpath. Schließlich will ich das Plugin selbst ja nicht verbiegen.

    3) Gute Hilfe leistet auch das Plugin bwp_minify. Es wird aber alleine in der Regel nicht reichen.

    Fazit: Je mehr Plugins, um so mehr Ärger, wenn man JavaScript in den Footer verschieben will. Die Upgrade-Sicherheit ist allerdings höher als man angesichts der Komplexität der Eingriffe erst mal vermuten würde.

    Einmal editiert, zuletzt von timkaufmann (22. April 2015 um 16:30)

  • was magst damit erreichen?

    wozu prüfen, ob jQery schon da ist und wieso undwozu ein externes Script

    das gibt massig Probleme, habe grad akut so eine SIte wo schlussendlichst das hauseigene jQuery geladen wird und das externe

    weil das hauseigene brauchen Plugins, die berufen sich ja da drauf,...
    wenn das nicht klappt krachts dann hint und vorn,

  • Hallo Monika, danke für die Warnung, das ist mir alles klar, ich spiele halt gerade damit herum und komme an dieser bestimmten Stelle (trotz google) nicht voran. Also alles was ich gerne wissen möchte, ist die Frage, [COLOR=#333333]wie man korrekt prüft, ob jquery (core) schon registriert(!) ist, also ob der Aufruf erfolgreich war (was er, wie gesagt, derzeit nicht sein kann, da google die Datei noch nicht anbietet)[/COLOR]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!