1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Scriptmanagement für WP

Dieses Thema im Forum "Allgemeines" wurde erstellt von pixselig, 11. Februar 2014.

  1. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    Hallo Zusammen

    Im Moment optimiere ich eine bestehende, nicht von mir erstellte, WP-Installation. Leider eine etwas undankbare Angelegenheit. Nun aber zur Frage:

    Die besthende Installation verwendet recht viele PlugIns - leider sind auch die meisten, da oder dort, notwendig. Jetzt ist es aber so, dass viele dieser PlugIns ihre eigenen js und css Dateien einbinden. Kleinere js oder css Dateien fasse ich in jeweils einer zusammen. Grössere schaue ich mir dann in Bezug auf die einzelnen Notwendigkeiten an (auf welchen Seiten wird die js oder css Datei tatsächlich gebraucht?) Und dann deregistriere ich sie in der functions.php des childthemes via:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    in zusammenhang mit einer if-Abfrage in der ich definiere unter welchen Bedingungen dies passieren soll.

    Nun ist es aber so, dass das ganze sehr umständlich ist, und man leider auch leicht den überblick verliert.
    Daher meine Frage: wie macht Ihr das so, bzw. gibt es ein PlugIn (eigendlich doof aber der Übersicht wegen) welches einem das ganze erleichtert? Ich habe leider selber nichts passendes finden können.

    LG, pixselig
     
  2. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ich registriere nichts und binde die unterschiedlich ein. JavaScripts meistens direkt am Ende vom Content in einem Beitrag, in dem das Script laufen soll. Ein Kommentar muss sein, sonst feuert der Editor es wieder raus.

    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn es nicht im Beitrag geht, dann auch mal im Footer.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Oder bei einem Plugin abfragen, ob sich $_SERVER["REQUEST_URI"] im Array befindet und nur dann add_action ausführen, wie auf der Seite weiter unten im Listing. Da lassen sich ja dann alle Seiten im Array aufnehmen, in denen neue.css im Head eingebunden werden sollen.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    http://www.coder-welten.com/polyfill-fuer-tabellen-und-div-bereiche/
     
    #2 Melewo, 11. Februar 2014
    Zuletzt bearbeitet: 11. Februar 2014
  3. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    Danke Melewo für deine Antwort!

    Ich bin mir nicht sicher, ob du meine, zugegeben umständlich formulierte, Frage verstanden hast ;)

    Es geht darum, dass jedes PlugIn ein oder mehrere JS- sowie CSS-Dateien AUTOMATISCH auf ALLEN Seiten einbindet. Ich selber DEregistriere diese mittels IF-Schleife und der WP-Funktion "wp-deregister-script/style" in der functions.php des Childthemes.

    Da ich für jedes Script eine andere IF-Schleife brauche, bzw. unterschiedliche Bedingungen, wird das alles sehr unübersichtlich.

    Wenn ich jetzt zum Beispiel einen neuen Post mit einer Lightbox erstelle, muss ich in der functions.php die jerweilige Post-ID als Array in die entsprechende IF-Schleife packen. Das nur als Beispiel...

    Ich habe schon überlegt, dass einzelne Einbinden über Custom-Fields zu "vereinfachen" - allerdings fehlt mir dabei dann noch immer eine schöne Übersicht, welches Script wo aktiv ist. Ganz davon zu schweigen, dass das definieren von Custom-Fields für eine höhere Anzahl an Scripten auch ein "bischen" Arbeit ist.

    Daher auch meine Frage: gibt es für WP soetwas wie einen Scriptmanager?

    LG, pixselig
     
  4. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Ich weiß es nicht, überlege nur, ein Plugin weiß ja nicht nach den ersten Beiträgen, ob ein Script oder eine CSS in den Beiträgen 568, 788 und 999 benötigt wird oder bereits eine Seite vorher oder 3 Seiten später. Wenn ein Script nicht unbedingt in den Header oder Footer gehört, finde ich es deshalb schon einfacher, einfach als letztes im Editor einzufügen und da die ID anzugeben oder eventuell die Scripts einfach als Shortcode in Beiträge einzufügen.

    Die Frage ist schon interessant. Habe ja praktisch erst vor gut einem halben Jahr mit WP begonnen und weiß noch viel zu wenig. Gelesen hatte ich schon beide Seiten, wusste bisher nur nicht so richtig, wenn das erforderlich sein sollte.

    http://codex.wordpress.org/Function_Reference/wp_enqueue_script
    http://codex.wordpress.org/Function_Reference/wp_register_script

    Bei mir habe ich zusätzlich eine onload-Funktion im Footer und die hat nichts weiter zu tun, als weitere Funktionen aufzurufen. Über so eine zentrale Funktion ließe sich einiges steuern, auch mit PHP. Niemand sagt, dass eine Funktion unbedingt in die functions.php gehört, die könnte auch im Footer oder eine andere im Header eingefügt werden.
     
  5. smartware.cc

    smartware.cc Well-Known Member

    Registriert seit:
    14. Januar 2014
    Beiträge:
    227
    Zustimmungen:
    0
    Echt eine sehr interessante Fragestellung!

    Custom Fields sind keine befriedigende Lösung, da gebe ich Dir recht. Das wäre von der Übersichtlichkeit her nicht wirklich besser als Deine jetzige Lösung.

    Wäre es über Kategorien-Zuordnung denkbar?

    Peter
     
  6. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    Danke einmal!

    @Melewo: es geht mir garnicht darum, dass das PlugIn zur Scriptverwaltung automatisch erkennt auf welcher Seite welches Script benötigt wird. Vielmehr geht es um ein PlugIn welches für den erfahreren WP-User gedacht ist, der weiss auf welcher Seite welches Script benötigt wird und dies dann manuell "freischaltet". Ich meine ein automatisches erkennen wäre sicher schön, allerdings zumindest bei scripten die in den header müssen unvorteilhaft (in bezug auf die Ladegeschwindigkeit) da zu allererst der Content nach "Hinweisen" durchsucht werden müsste bevor dann der jeweils angepasste Header ausgeliefert werden kann. Eventuell könnte das aber in zusammenhang mit einem guten Caching-PlugIn umgangen werden.

    @Peter: Auch ich finde dieses "Problem" sehr interessant, und mich wundert, dass man dazu im Inet eigentlich nichts findet. Denn gerade wenn man eine umfangreichere Seite betreibt/betreiben will steht man schnell vor einem Script-Dschungel. So toll auch die vielfältige Erweiterungsmöglichkeiten mittels PlugIns bei WP sind, ist dass dann wohl der Preis denn man einer einfachen Anfänger-Useability zahlen muss.
    Eine Kategorien-Zuordnung, mhmm? Gar keine so schlechte Möglichkeit! Was mir allerdings nicht ganz so gefällt ist, dass man damit in die gesamte Seitenstruktur der Webpräsenz eingreift. Bzw. Kategorien dafür eigentlich nicht gedacht sind. Ich habe auch schon an Custom-Post-Types gedacht, ist aber auch keine wirkliche Lösung.

    Ich versuche mal zu beschreiben, wie ich mir so ein PlugIn vorstelle (ich selber habe null Erfahrung im Erstellen von PlugIns für WP):

    -das Scriptmanagement-PlugIn (im weiteren SPI genannt) erkennt automatische welche PlugIns installiert sind (geht das? bzw. wie sind dazu die WP-internen Security-Richtlinien?)
    -im SPI sind sämtliche Handle's der bekannteren/grösseren PlugIns hinterlegt
    -mit Hilfe der automatischen PlugIn-Erkennung und den Handle's der installierten PlugIns deregistriert das SPI automatisch ALLE Scripts und CSS-Dateien.
    -im Bereich Beiträge und Seiten wird bei jeder Seite/jedem Beitrag ein zusätzliches Fenster angezeigt in welchem ich die zu ladenden Scripte MANUELL auswählen kann
    -in der Beitrags-/bzw. Seitenübersicht kommt eine neue Spalte hinzu in der ich die für diese Seite geladenen Scripte sehen kann (der Übersicht wegen)
    -weiters gibt es auf der SPI Einstellungsseite die Möglichkeit das Scriptladen für Sonderseiten zu definieren (Homepage, Kategorienübersicht, Suchergebnisse, 404 etc.)
    (eventuell: - das SPI ermöglicht es eine einfache Script/CSS-Dateieinbindung für eigene Dateien, in denen man manuell verschiedene kleinere PlugIn-Dateien zusammenfassen kann. - wenn möglich: eine zusätzliche Überwachung der zusammengefassten Script/CSS-Dateien mit einer Meldung, wenn selbige durch ein Update verändert wurden (soll die Wartung vereinfachen))

    Tja, so stellt sich der kleine pixselig das vor ;)
    Da ich aber über keinerlei Erfahrung im PlugIn-schreiben für WP verfüge, meine Fragen:
    -ist soetwas prinzipiell möglich?
    -wo liegen eventuelle Schwirigkeiten?
    -warum gibt es soetwas noch nicht ;) ?

    Nochmals zu meiner Vorstellung: klar ist, dass dieses SPI nur für Erfahrene Nutzer gedacht ist. Und dass das SPI am besten sehr früh in ein Webseiten-/Blogprojekt eingebunden wird um ein langwieriges Nachbearbeiten von schon vorhandenen Inhalten zu vermeiden.

    LG, pixselig
     
  7. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    In der Bezahlung oder Summe, die Du dafür ausgeben möchtest?

    Ich sag einmal, ab 24.000 Euro, wovon 6.000 im Voraus fällig würden, würde ich mir heute noch weitere Gedanken machen, wobei mit der Fertigstellung aber frühestens in einigen Monaten zu rechnen wäre, zu Weihnachten aber wahrscheinlicher ist.

    War jetzt nicht ganz ernst gemeint, ich stelle es mir nur nicht ganz so einfach vor, als dass man so ein Plugin mal schnell nebenbei schreibt, um es dann kostenlos über WP feilzubieten. Ein vernünftiger Sponsor gehört da schon mit ins Bot.
     
  8. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.969
    Zustimmungen:
    57
    - Prizipiell ist durch Programmierung so gut wie alles möglich, meist nur eine Frage des Aufwandes.
    - was braucht man wirklich, wie gut kann man PRogrammieren
    - vielleicht weil sowas noch niemand gebraucht hat, oder zuviel aufwand für den Vorteil wäre.

    ich lese auch mit, es fehlt mir zb die vorstellung warum würde ich das brauchen (zb als Programmierer von Plugins), da ich mir die SCripte/CSS meist nach Codex Anweisungen otpimal bauen will, und weil ich bestehende Plugins meist hoffe das sie gut für meine Zwecke und Anwendungen und mit Wordpress funktionieren.
    ob ein Umorganisieren von fremdn Plugin oft zielführen ist, ist auch fraglich. da man selten die gesamten Zusammenhänge die der Programmierer machte erkenne kann.
    aber vielleicht fehlt mir für dein Projekt einfach die Vorstellung was ich damit machen könnte.
     
  9. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    @Shadow

    Ein einfaches (wirklich einfaches!) Szenario:

    -eine Installation verwendet die PlugIns "Contactform7", "Lightbox" und "Slider XY".
    -jedes PlugIn bindet auf JEDER Seite eine JS- und eine CSS-Datei ein.
    -"Contactform7" wird nur auf der Seite "Kontakt" benötigt!
    -"Lightbox" wird nur auf Seiten/Posts mit Bildern benötigt!
    -"Slider XY" wird nur auf der Homepage benötigt!
    ->>> auf allen Anderen Seiten werden die Scripte und CSS Dateien völlig umsonst geladen (mehr traffic, mehr http-requests usw.)
    ->>> das in meinem Kopf steckende PlugIn versucht diese Problematik möglichst Übersichtlich und Nutzerfreundlich (für erfahrerene Nutzer!) zu lösen.

    LG, pixselig
     
  10. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Sehe ich nicht anders und sah es noch nie anders und deshalb mache ich es nicht anders bei meinen Plugins, doch das schrieb ich bereits und verlinkte dazu ein Beispiel:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    http://www.coder-welten.com/polyfill-fuer-tabellen-und-div-bereiche/

    Doch es lässt sich halt am einfachsten gleich im Plugin erledigen, dass im Plugin eine Liste eingefügt wird, von den Seiten, in denen die Dateien geladen werden sollen. Eventuell nicht so primitiv gleich im Code, sondern über eine ansprechend gestaltete Seite im Dashboard mit einem Formular zur Auswahl der Seiten, die dann in der DB für dieses Plugin gespeichert werden könnten. Also, schaue nicht im Array nach, sondern schaue in der DB nach, ob Plugin-Name mit dieser Seite verknüpft ist, sonst lade nichts von diesem Plugin.
     
  11. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    Das ist ja sehr löblich wenn ein PlugIn von sich aus so eine Möglichkeit mitbringt!
    Tun aber leider (fast) keine!
    Da ich nicht in den Code von bestehenden PlugIns eingreifen will erledige ich das händisch in der functins.php. Ich verwende dazu aber nicht "REQUEST_URI" sondern die Contitional Tags -> https://codex.wordpress.org/Conditional_Tags was aber auf das Gleiche hinausläuft.
    Das was du aber mit "nicht so primitiv gleich im Code [...] Seite im Dashboard [...] sondern schaue in der DB [...]" schreibst ist "als PlugIn gedacht" zimlich genau das was ich mir vorstelle ;)
     
  12. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Und wenn ich jetzt den Pfaden weiter spinnen würde, dann wäre es durchaus möglich eine Tabelle in der DB zu verwenden, die nicht nur für ein Plugin gedacht ist, sondern für alle Plugins.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dazu dann ein Seite mit einem Formular im Dashboard, wo ein Plugin nach dem anderen ausgewählt werden könnte, um es mit 1 bis 100 Seiten zu verknüpfen. Es setzt aber voraus, dass so eine Tabelle von WP hinzugefügt wird, die allen Plugin-Entwicklern bekannt wäre und möglichst noch eine entsprechende Funktion, sonst würde auch weiterhin jeder sein eigenes Süppchen kochen und dann würde es halt teuer, etwas Ähnliches in dieser Form nachzurüsten.
     
  13. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Funktionen wie is_single() oder is_front_page() verwende ich im Theme, bei Plugin versagten diese Funktionen, warum ist mir nicht hundertprozentig klar, doch so lange entwickle ich ja auch noch nichts für WP.
     
  14. smartware.cc

    smartware.cc Well-Known Member

    Registriert seit:
    14. Januar 2014
    Beiträge:
    227
    Zustimmungen:
    0
    Wie schon erwähnt finde ich die grundsätzliche Fragestellung durchaus interessant und eine Diskussion wert aber ich kann nicht anders und muss folgendes dazu loswerden:

    Ladezeiten spielen heute nicht mehr wirklich die große Rolle - selbst bei Mobilgeräten nicht. Wenn eine Seite lange lädt dann sind meist andere Dinge daran schuld als ein paar kleine css oder js Dateien - wie beispielsweise riesige Bilder die dann im Browser skaliert werden.

    Wenn eine Seite extrem langsam ist, dann ist irgend etwas grundsätzlich schiefgegangen.

    Klar kann man immer optimieren und das Vermeiden von unnötigem Traffic will ich auch gar nicht abwerten sondern sehe es durchaus als sinnvoll an. Aber ob es wirklich nötig ist, mit großem Aufwand ein paar Byte einzusparen, bezweifle ich. Oft kann an anderer Stelle wesentlich mehr mit wesentlich weniger Aufwand eingespart werden.

    Bei den Plugins heißt das eben, nicht unnötig viele Plugins einzusetzen und bei Projekten, die im Laufe der Zeit gewachsen sind, einfach wieder einmal zu hinterfragen ob alle 237 aktiven Plugins wirklich noch nötig sind.

    Was die Auswahl der Plugins betrifft so bevorzuge ich persönlich schlanke Plugins die genau eine Sache effizient machen anstatt Schwergewichte mit einer Fülle von Funktionen, von denen ich nur 5% benötige.

    Peter
     
  15. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Du vergisst dabei, dass die Anzahl von 'Connections per Hostname' begrenzt ist:

    http://www.browserscope.org/?category=network

    Die nächsten Dateien werden erst angefordert wenn die ersten Anfragen beantwortet wurden. Ist ja nicht so, dass zum Beispiel 30 kleine Dateien zugleich in einem Rutsch angefordert würden. Der zeitliche Versatz ist bei der Zeitlinie vom Firbug gut einsehbar.

    Und laut den Tests von Amazon bedeuten 100 Millisekunden Ladezeit mehr oder weniger auch 1 % Umsatz mehr oder weniger.

    http://mashable.com/2011/04/06/site-speed/
     
  16. pixselig

    pixselig Well-Known Member

    Registriert seit:
    8. Mai 2012
    Beiträge:
    2.301
    Zustimmungen:
    10
    @Peter

    Natürlich hast du prinzipiell recht - es gibt viele, wesentlich wichtigere Stellschrauben um den "Speed" einer Seite zu optimieren. Wenn man aber ein wenig ein Perfektionist ist, dann stolpert man früher oder später über das hier diskutierte Problem. Gerade wenn WooComerce plus zusätzlichen PlugIns verwendet wird schnellt die Script-Anzahl nur so nach oben.

    Und wenn man dann noch die von Melewo erwähnte Tatsache der limitierten "Connections per Hostname" (ich wollte etwas weiter oben mit der Erwähnung der http-Requests auf das selbe hinaus) bedenkt, bekommt das ganze doch wieder ein wenig mehr Gewicht.

    Auch aus SEO-Sicht (jetzt fang ich auch schon so an :/ ) ist eine dahingehende Optimierung sicher nicht von Nachteil. Ich denke, dass Google und Andere bei der Beurteilung der Seriosität und Wichtigkeit die Technische-Umsetzung einer Seite als Kriterium bewerten. Und dann macht es eben auch nochmals einen zusätzlichen Unterschied ob ich auf jeder Seite 12js- und 10css-Dateien eingebunden habe oder im Schnitt eben nur Vier von beidem. Gerade auch den starken Fokus von Google Pagespeed darauf, deute ich als Hinweis.

    Ok, nochmals: ich bin prinzipiell deiner Meinung - es gibt viele, wichtigere, Optimierungsmassnahmen! Allerdings, als Perfektionist, ist das Thema Script-Einbindung von PlugIns nicht zu übersehen ;)

    LG, pixselig

    PS: willkommen sind jederzeit noch mehr Meinungen. Nur immer her damit :D
     
  17. g3h

    g3h Well-Known Member

    Registriert seit:
    25. Juni 2013
    Beiträge:
    661
    Zustimmungen:
    0
    Mit dieser Frage hatte ich mich auch schon auseinander gesetzt, finde ich sehr sinnvoll. Bei einer Seite, die ich jemanden gemacht habe, war es konkret eine Lightbox. Die brauchte ich nur auf einer Seite, warum dann dass ganze Zeug immer laden ?
    Ich habs dann erst mal mit wp_enqueue_script und Conditional-Tags gelöst also ähnlich wie du.
    Im Prinzip könnte man aber das ganze Plugin auf den anderen Seiten deaktivieren, was ja über die Datenbank möglich ist.
    Oder ging es dir nur um spezielle Scripte von Plugins ?

    MfG
     
    #17 g3h, 12. Februar 2014
    Zuletzt bearbeitet: 12. Februar 2014
  18. Melewo

    Melewo Well-Known Member

    Registriert seit:
    8. Juli 2013
    Beiträge:
    3.097
    Zustimmungen:
    0
    Weil ich es gerade fand, als ich nach etwas anderem suchte:

    http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/

    Was macht das, nur printen in den Quelltext, falls Shortcode gefunden wurde, wenn ich es richtig verstanden habe. Doch ich verstehe vieles erst, nachdem ich es getestet habe.
     
  19. Shadow

    Shadow Well-Known Member

    Registriert seit:
    12. Februar 2007
    Beiträge:
    2.969
    Zustimmungen:
    57
    da wir im Content nachgeschaut ob
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  20. smartware.cc

    smartware.cc Well-Known Member

    Registriert seit:
    14. Januar 2014
    Beiträge:
    227
    Zustimmungen:
    0
    An die von Melewo genannte Anzahl Connections habe ich auch schon gedacht und dabei bin ich auf eine andere Idee gekommen.

    Was haltet Ihr von der Idee eines Plugins das alle mit wp_enqueue_script und wp_enqueue_style registrierten js und css Dateien jeweils zu einer zusammenfasst und so die Anzahl der nötigen Verbindungen reduziert? So ein Plugin könnte auch gleich sämtliche Kommentare sowie unnötige Whitespaces entfernen und müsste auch @import auflösen. Das Ergebnis kann als File gecached werden.

    Das Parsen der Dateien stelle ich mir nicht ganz so trivial vor - es sollte ja danach auch noch alles funktionieren - aber im Prinzip dürfte das gar kein so großer Act sein.

    Bitte um Euer Feedback. Ich denke, das wäre ein sehr sinnvolles Plugin und würde ich würde es gerne angehen.

    Peter
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden