Jeder, der längere Zeit eine WordPress-Website betreibt, kennt das Problem. Für alle möglichen Funktionen braucht man kleine Code-Schnipsel, die man in die functions.php des aktivierten Themes einfügt. Wenn die Website nur einige wenige dieser Code-Snippets benötigt, ist das grundsätzlich kein Problem. Doch eine Website, die bereits seit Jahren online ist, hat eventuell schon sehr viele Code-Schnipsel angesammelt. So verliert man erstens schnell den Überblick und zweitens sind die Änderungen bei einem Theme-Wechsel oder einem Update des Themes verschwunden. Ich zeige dir heute einen besseren Weg.
Nachteile von Code-Schnipseln in der functions.php
Nach und nach sammeln sich viele Code-Snippets in der functions.php-Datei eines WordPress-Themes an. Die Übersicht leidet schon extrem, auch weil zumeist nicht nur Schnipsel ihre Heimat in der Datei finden, sondern auch noch Theme-Funktionen darin untergebracht sein können, wie es bei den Standard-Themes von WordPress und einigen anderen Themes der Fall ist. Bei einem Theme-Update sind zudem noch alle Code-Schnipsel wieder verschwunden und man muss sein hoffentlich getätigtes Backup der Datei wieder einspielen. Nachteile über Nachteile.
Der Mensch ist ein Herdentier und hinterfragt viele Dinge nicht – auch nicht die Dinge, die bisher nicht wirklich gut funktionierten. Alle Verwender einer WordPress-Website handhaben es so, daher wird es ebenso gehandhabt. Auch mir ist das jahrelang so gegangen. Ich kenne alle Nachteile zur Genüge und habe trotzdem nicht nach einer Lösung gesucht, obwohl diese so nah ist.
Ein seitenspezifisches Plugin anlegen, statt die functions.php zu nutzen
Die Idee ist naheliegend und wesentlich funktioneller, als die unsägliche functions.php zu nutzen. Wir erstellen einfach ein eigenes Plugin für die Website. Alle Code-Schnipsel kommen nur noch in dieses Plugin hinein, alte Schnipsel ziehen einfach um. Das hat zudem den großen Vorteil, dass nach einem Theme-Update oder einem Theme-Wechsel alle Code-Fragmente noch vorhanden sind. Die Lösung ist also zukunftssicher und einfach zu handhaben.
Doch bevor wir an die Arbeit gehen, fertigen Sie bitte ein Backup ihrer functions.php Datei an.
So erstellst du ein eigenes Plugin für deine Website
Vielleicht denkst du jetzt, dass es echt kompliziert ist, ein eigenes Plugin zu erstellen. Doch das ist es nicht. Im Gegenteil, es ist sogar richtig einfach. Erstelle zuerst einen neuen Ordner auf deinem Desktop und nenne ihn websitename-plugin. Beispiel: drweb-plugin. In diesen Ordner fügst du eine leere Datei ein, die du mit Notepad (Windows) oder TextEdit (Mac) erstellen kannst. Nenne die Datei websitename-plugin.php.
Öffne die Datei nun mit einem Texteditor oder einer Entwicklungsumgebung wie zum Beispiel Atom, Brackets oder ähnlichen. Kopiere folgendes hinein:
Ein Klick öffnet das Gist bei GitHub
Nun kannst du in diese Datei deine Code-Schnipsel aus der functions.php-Datei einfügen. Nachdem das geschehen ist, lädst du den Ordner mit deinem Plugin in das Plugin-Verzeichnis von WordPress per (S)FTP hoch. Der korrekte Pfad lautet: wp-content/plugins/.
Im Anschluss musst du dich in dein WordPress einloggen und das Plugin noch aktivieren.
Fazit
Mit nur wenig Aufwand haben wir eine bessere und vor allem zumeist übersichtlichere Lösung für das Problem mit den Code-Schnipseln gefunden. Endlich sind unsere Sonderfunktionen bei Theme-Wechseln und Updates sicher. Das ist ziemlich smart. Wenn du Schnipsel zum Auslagern suchst, schau mal in diesen Beitrag. Da haben wir ein paar nützliche Code-Snippets gesammelt.
(dpe)
9 Antworten
Ein toller Tipp! Vielen Dank dafür
Eine sehr gute Anregung, vielen Dank.
Vielleicht habe ich nicht genug Ahnung, aber bei mir funktioniert es nicht.
Was mir fehlt ist die Angabe, was in der funktions.php erhalten bleiben muss und ein Beispiel für eine “websitename-plugin.php”.
Hallo!
In der functions.php bleibt alles erhalten, was sich auf das verwendete Theme bezieht – also alle Theme-Einstellungen. In das Plugin hingegen kommen nur Code-Schnipsel, die auch nach einem Wechsel des Themes erhalten bleiben sollen.
Ah jetzt ja, vielen herzlichen Dank.
Hab dies vor Jahren auch so gemacht und alles mögliche in Plugins gepackt. Bin inzwischen aber wieder abgekommen davon. Den ich finde es besser lediglich die functions.php einzubinden, nach der ja sowieso gesucht wird, wie lauter einzelne Plugins einzubinden, wo bei jedem einzelnen wiederum geschaut wird ob dies aktiv ist oder nicht etc. Das sind in manchen Fällen einige zusätzliche DB Aufrufe die man sich sparen kann. Eine gut dokumentierte functions.php tut es da auch. Ich lass mich aber gern auch eines besseren belehren 🙂
Sehr sinnvoll. Eine tolle Anleitung! Vielen Dank dafür. Würde das Plugin so auch in einer WordPress Multisite Installation funktionieren?
Ahoi,
interessant, aber ist es nicht heute üblich child-themes zu benutzen? da kann oder wird auch die functions.php dazugehören. dann überschreibt man nix mehr bei einem theme-update.
Hi Sven,
ja, man würde optimalerweise ein Child-Theme nutzen. Allerdings ist das doch deutlich schwieriger zu handhaben, als ein seitenspezifisches Plugin. Wenn man allein bedenkt, dass man im Child-Theme vielleicht Dinge deaktivieren möchte, die im Parent-Theme vorhanden sind, dann fällt die korrekte Pfadanpassung nicht leicht. Für Menschen mit weniger Hintergrundwissen ist ein Plugin schon cool.
Hallo Andreas,
danke für den Artikel! Bei mir ging nach Aktivierung des noch leeren Plugins vieles nicht mehr: Beim Aktualisieren von Beiträgen kam ein weißer Bildschirm, die Medienübersicht zeigte nichts mehr an, das Login ging nicht mehr.
Ich habe eine Multisite-Installation und WordPress 4.4.2.
Abhilfe schaffte die zusätzliche Angabe von Version, Author URI und Licence im Kopf des Plugins.