Spaces. Smartes Cloud Hosting für anspruchsvolle Webprojekte. Loslegen und Spaces testen. Von Mittwald.
Andreas Hecht 6. Februar 2016

WordPress: So nutzt du ein eigenes Plugin statt der functions.php

WordPress: So nutzt du ein eigenes Plugin statt der functions.php

Jeder, der län­ge­re Zeit eine WordPress-Website betreibt, kennt das Problem. Für alle mög­li­chen Funktionen braucht man klei­ne Code-Schnipsel, die man in die functions.php des akti­vier­ten Themes ein­fügt. Wenn die Website nur eini­ge weni­ge die­ser Code-Snippets benö­tigt, ist das grund­sätz­lich kein Problem. Doch eine Website, die bereits seit Jahren online ist, hat even­tu­ell schon sehr vie­le Code-Schnipsel ange­sam­melt. So ver­liert man ers­tens schnell den Überblick und zwei­tens sind die Änderungen bei einem Theme-Wechsel oder einem Update des Themes ver­schwun­den. Ich zei­ge dir heu­te einen bes­se­ren Weg.

WordPress: So nutzt du ein eigenes Plugin statt der functions.php

Nachteile von Code-Schnipseln in der functions.php

Nach und nach sam­meln sich vie­le Code-Snippets in der functions.php-Datei eines WordPress-Themes an. Die Übersicht lei­det schon extrem, auch weil zumeist nicht nur Schnipsel ihre Heimat in der Datei fin­den, son­dern auch noch Theme-Funktionen dar­in unter­ge­bracht sein kön­nen, wie es bei den Standard-Themes von WordPress und eini­gen ande­ren Themes der Fall ist. Bei einem Theme-Update sind zudem noch alle Code-Schnipsel wie­der ver­schwun­den und man muss sein hof­fent­lich getä­tig­tes Backup der Datei wie­der ein­spie­len. Nachteile über Nachteile.

Der Mensch ist ein Herdentier und hin­ter­fragt vie­le Dinge nicht – auch nicht die Dinge, die bis­her nicht wirk­lich gut funk­tio­nier­ten. Alle Verwender einer WordPress-Website hand­ha­ben es so, daher wird es eben­so gehand­habt. Auch mir ist das jah­re­lang so gegan­gen. Ich ken­ne alle Nachteile zur Genüge und habe trotz­dem nicht nach einer Lösung gesucht, obwohl die­se so nah ist.

Ein seitenspezifisches Plugin anlegen, statt die functions.php zu nutzen

Die Idee ist nahe­lie­gend und wesent­lich funk­tio­nel­ler, als die unsäg­li­che functions.php zu nut­zen. Wir erstel­len ein­fach ein eige­nes Plugin für die Website. Alle Code-Schnipsel kom­men nur noch in die­ses Plugin hin­ein, alte Schnipsel zie­hen ein­fach um. Das hat zudem den gro­ßen Vorteil, dass nach einem Theme-Update oder einem Theme-Wechsel alle Code-Fragmente noch vor­han­den sind. Die Lösung ist also zukunfts­si­cher und ein­fach zu hand­ha­ben.

Doch bevor wir an die Arbeit gehen, fer­ti­gen Sie bit­te ein Backup ihrer functions.php Datei an.

So erstellst du ein eigenes Plugin für deine Website

Vielleicht denkst du jetzt, dass es echt kom­pli­ziert ist, ein eige­nes Plugin zu erstel­len. Doch das ist es nicht. Im Gegenteil, es ist sogar rich­tig ein­fach. Erstelle zuerst einen neu­en Ordner auf dei­nem Desktop und nen­ne ihn web­site­na­me-plugin. Beispiel: drweb-plugin. In die­sen Ordner fügst du eine lee­re Datei ein, die du mit Notepad (Windows) oder TextEdit (Mac) erstel­len kannst. Nenne die Datei websitename-plugin.php.

Öffne die Datei nun mit einem Texteditor oder einer Entwicklungsumgebung wie zum Beispiel Atom, Brackets oder ähn­li­chen. Kopiere fol­gen­des hin­ein:

Ein Klick öff­net das Gist bei GitHub
Das eigene Plugin erstellen statt functions.php zu nutzen

Nun kannst du in die­se Datei dei­ne Code-Schnipsel aus der functions.php-Datei ein­fü­gen. Nachdem das gesche­hen ist, lädst du den Ordner mit dei­nem Plugin in das Plugin-Verzeichnis von WordPress per (S)FTP hoch. Der kor­rek­te Pfad lau­tet: wp-con­ten­t/p­lug­in­s/.

Im Anschluss musst du dich in dein WordPress ein­log­gen und das Plugin noch akti­vie­ren.

Das Seitenspezifische Plugin

Fazit

Mit nur wenig Aufwand haben wir eine bes­se­re und vor allem zumeist über­sicht­li­che­re Lösung für das Problem mit den Code-Schnipseln gefun­den. Endlich sind unse­re Sonderfunktionen bei Theme-Wechseln und Updates sicher. Das ist ziem­lich smart. Wenn du Schnipsel zum Auslagern suchst, schau mal in die­sen Beitrag. Da haben wir ein paar nütz­li­che Code-Snippets gesam­melt.

(dpe)

Andreas Hecht

Andreas Hecht

entwickelt WordPress-Websites und bietet dir einen Website Sicherheit Service und einen Performance Service für deine Website. Außerdem ist er Spezialist für Onpage SEO und bringt Deine Website in die Top-Suchergebnisse von Google. Auf seinem Blog schreibt er über WordPress, SEO und Content SEO.

12 Kommentare

  1. Hallo Andreas,
    dan­ke für den Artikel! Bei mir ging nach Aktivierung des noch lee­ren Plugins vie­les nicht mehr: Beim Aktualisieren von Beiträgen kam ein wei­ßer Bildschirm, die Medienübersicht zeig­te nichts mehr an, das Login ging nicht mehr.
    Ich habe eine Multisite-Installation und WordPress 4.4.2.
    Abhilfe schaff­te die zusätz­li­che Angabe von Version, Author URI und Licence im Kopf des Plugins.

  2. Ahoi,

    inter­es­sant, aber ist es nicht heu­te üblich child-the­mes zu benut­zen? da kann oder wird auch die functions.php dazu­ge­hö­ren. dann über­schreibt man nix mehr bei einem the­me-update.

    • Hi Sven,

      ja, man wür­de opti­ma­ler­wei­se ein Child-Theme nut­zen. Allerdings ist das doch deut­lich schwie­ri­ger zu hand­ha­ben, als ein sei­ten­spe­zi­fi­sches Plugin. Wenn man allein bedenkt, dass man im Child-Theme viel­leicht Dinge deak­ti­vie­ren möch­te, die im Parent-Theme vor­han­den sind, dann fällt die kor­rek­te Pfadanpassung nicht leicht. Für Menschen mit weni­ger Hintergrundwissen ist ein Plugin schon cool.

  3. Sehr sinn­voll. Eine tol­le Anleitung! Vielen Dank dafür. Würde das Plugin so auch in einer WordPress Multisite Installation funk­tio­nie­ren?

  4. Hab dies vor Jahren auch so gemacht und alles mög­li­che in Plugins gepackt. Bin inzwi­schen aber wie­der abge­kom­men davon. Den ich fin­de es bes­ser ledig­lich die functions.php ein­zu­bin­den, nach der ja sowie­so gesucht wird, wie lau­ter ein­zel­ne Plugins ein­zu­bin­den, wo bei jedem ein­zel­nen wie­der­um geschaut wird ob dies aktiv ist oder nicht etc. Das sind in man­chen Fällen eini­ge zusätz­li­che DB Aufrufe die man sich spa­ren kann. Eine gut doku­men­tier­te functions.php tut es da auch. Ich lass mich aber gern auch eines bes­se­ren beleh­ren :-)

  5. Eine sehr gute Anregung, vie­len Dank.
    Vielleicht habe ich nicht genug Ahnung, aber bei mir funk­tio­niert es nicht.
    Was mir fehlt ist die Angabe, was in der funktions.php erhal­ten blei­ben muss und ein Beispiel für eine “websitename-plugin.php”.

  6. Ein tol­ler Tipp! Vielen Dank dafür

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.