Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WordCamp Berlin 2017 - WordPress Architektur Grundlagen

WordCamp Berlin 2017 - WordPress Architektur Grundlagen

Wie erweitere ich WordPress korrekt, warum ist die Theme functions.php kein guter Weg für Erweiterungen und warum Katzenbabies durch den Hack von WordPress Core Funktionen sterben.

Jan Thiel

May 13, 2017
Tweet

More Decks by Jan Thiel

Other Decks in Technology

Transcript

  1. Userland WordPress Core Plugins Themes mu-plugins Child Themes Actions Filter

    Theme / Template Loader /wp-content/plugins/ /wp-content/themes/ /wp-content/
  2. Funktionale Teilung WordPress Core Plugins Themes mu-plugins Child Themes Actions

    Filter Theme / Template Loader • Themes – Optische Darstellung von Inhalten – Templating – Anpassung bestehender Themes – Vordefinierte Inhalte („Starter Content“)
  3. Funktionale Teilung WordPress Core Plugins Themes mu-plugins* Child Themes Actions

    Filter Theme / Template Loader • Plugins – Erweiterung um Features – Veränderungen bestehender Funktionen – Veränderung des Verhaltens anderer Plugins – Einzeln aktivierbar und deaktivierbar – Automatisch aktualisierbar (wenn im wp.org Repo) * Für Interessierte: https://codex.wordpress.org/Must_Use_Plugins
  4. Badlands WordPress Core Plugins Themes mu-plugins Child Themes Actions Filter

    Theme / Template Loader /wp-content/plugins/ /wp-content/themes/
  5. Nogoland WordPress Core Plugins Themes mu-plugins Child Themes Actions Filter

    Theme / Template Loader /wp-content/plugins/ /wp-content/themes/
  6. functions.php • Teil des Themes • Funktionalität steht nur dem

    aktuell aktiven Theme zur Verfügung • Seiteneffekte mit Plugins möglich • Nach Theme Updates möglicherweise nicht mehr vorhanden • Docs: „The functions file behaves like a WordPress Plugin “ Siehe: https://codex.wordpress.org/Functions_File_Explained
  7. WordPress Plugins • Nicht Theme gebunden • Separat aktivierbar /

    deaktivierbar • Separat Updatebar • Versionierbar (git, svn etc) • Deploybar (SFTP, git pull, gulp, Jenkins, etc.)
  8. WordPress Plugins • Mehraufwand für ein WordPress Plugin statt functions.php:

    • Gesparter Wartungsaufwand durch Plugin: ca. 90 Sekunden (bei IDE Unterstützung) unbezahlbar
  9. Wartungsaufwand? • Zustand eines Plugins einfach ersichtlich • Logische Platzierung

    für Funktionen • Plugincode einfach in GIT versionierbar • Code logisch in mehrere Plugins clusterbar
  10. Und das Theme? • Die üblichen Verdächtigen im Child Theme:

    – style.css – einzelnen Templates (*.php) – functions.php Child-Theme verwenden!
  11. Child Theme • Mehraufwand für ein Child Theme statt direkte

    Anpassung des Themes: • Gesparter Wartungsaufwand durch Child Theme: ca. 5 Minuten (bei IDE Unterstützung) unbezahlbar
  12. Real Life Probleme • Themes bundeln immer wieder Plugins –

    Updates der Plugins nur über Theme Updates (Das TimThumb Debakel) • Für viele Endanwender ist der Aufwand ein Plugin zu erstellen immer noch zu groß • Entwickler sehen zum Teil nicht den langfristigen Betrieb, sondern nur die kurzfristige Aufgabenerfüllung • Fehlersuche bei Code in functions.php unnötig komplex • Themewechsel wird zum Alptraum weil alles Mögliche in der functions.php gecoded ist • Codeversionierung einer functions.php nicht sinnvoll möglich Grundsätzlich sollte Code, der von Dritten entwickelt und betreut wird NICHT verändert werden
  13. Architektur noch immer ein Fremdwort? Jan Thiel [email protected] https://WLWP.eu Icon

    made by Freepik from www.flaticon.com are licensed under CC BY 3.0