Wohin mit den WordPress Codeschnipsel?

Gesammelte WordPress Codeschnipsel können an verschiednen Plätzen ausgelagert werden, sei es die functions.php des Themes oder ein Plugin.

Da hat man mal wieder einen hilfreichen WordPress Codeschnipsel gefunden und stellt sich die Frage, wohin damit jetzt eigentlich?

schnipsel-image

Berechtigte Frage, denn es gibt viele Möglichkeiten. In diesem Artikel möchte ich auf 3 Varianten eingehen und kurz ihre Vor- bzw. Nachteile darstellen.

Variante 1: functions.php des Themes nutzen

Diese Variante ist wohl die weit Verbreiteste.
Codeschnipsel kopieren, functions.php des aktiven Themes öffen, Schnipsel an das Ende kopieren, speichern, fertig. Keine große Erklärung nötig; Schnelligkeit und Einfachheit sind somit die Vorteile.

Demgegenüber stehen allerdings ein paar Nachteile:
Wie dem folgendem Schnipsel aus der wp-settings.php zu entnehmen ist, wird die functions.php nicht immer geladen, immer dann nicht, wenn WP_INSTALLING definiert ist.

// Load the functions for the active theme, for both parent and child theme if applicable.
if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) {
	if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
		include( STYLESHEETPATH . '/functions.php' );
	if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
		include( TEMPLATEPATH . '/functions.php' );
}

Bei mehreren Schnipseln in der functions.php kann auch schnell die Übersicht verloren gehen, außerdem könnten bei einer Aktualisierung des Themes die Daten wieder verloren gehen. Stichwort Child Themes.

Variante 2: Ein Must-Use Plugin nutzen

Ein Must-Use Plugin? MU Plugins, in der deutschen Übersetzung Obligatorisch, sind PHP Dateien im /wp-content/mu-plugins Verzeichnis, die automatisch geladen werden.

Die Codeschnipsel können somit entweder jeweils in eine Datei oder alle direkt in einer Datei abgespeichert werden.
Diese Art von Plugins braucht übrigens auch nicht den üblichen File Header.

Der Vorteil liegt hierbei also bei der Organisation bzw. besseren Übersicht.
Ein weiterer Vorteil gegenüber der vorherigen (und auch nächsten) Variante ist, dass die MU Plugins früh geladen werden.

Die MU Plugins werden grundsätzlich immer geladen, heißt, auch bei einer Multisite Installation mit mehreren Blogs. Möchte man einen Codeschnipsel nur für einen Blog nutzen, so muss die jeweilige Blog ID abgefragt werden, oder verwendet die nächste Variante.

Variante 3: Ein simples, seitenspezifisches Plugin nutzen

Diese Variante hat vor kurzem Samuel Wood aka Otto in seinem Blog unter „Creating a Site-Specific Snippets Plugin“ veröffentlicht.

Hiebei wird ein einfaches Plugin wie folgt angelegt:

  1. Erstelle zunächst ein neues Verzeichnis im Plugin Verzeichnis, zum Beispiel /wp-content/plugins/example.de.
  2. Erstelle in dem neuen Verzeichnis eine leere PHP Datei, der Dateiname ist beliebig.
  3. Danach benötigt das Plugin einen File Header:
<?php
/*
Plugin Name: Plugin für example.de
Description: Codeschnipsel für example.de
*/

In diesem Plugin können jetzt die Codeschnipsel abgelegt werden. Entweder ein Plugin für alle oder für jeden Schnipsel ein Plugin, was den Vorteil mit sich bringt, dass sich die einzelnen Schnipsel/Plugins später einfach deaktivieren lassen.

Das waren drei verschiedene Varianten, wie man seine Codeschnipsel in WordPress integrieren kann.
Im Endeffekt muss nun jeder selbst entscheiden, so wie er es persönlich am Besten befindet.
Aber vielleicht gibt es ja noch andere Varianten, diese können natürlich gerne in den Kommentaren mitgeteilt werden.

Eure Meinungen

    • Dominikvor 2 Jahre

      Die Variante kommt ursprünglich von WordPress MU, seit Version 2.8 kann sie auch im normalen WordPress Modus betrieben werden.

  1. Frankvor 2 Jahre

    Als kleine noch aktive Ergänzung kann man die my-hacks.php sehen; wenn auch seit 2.8 nicht wirklich bewusst im Rampenlicht (infos).

  2. Tomvor 2 Jahre

    ich hab ja bisher MU immer mit MultiUser “übersetzt” und mich daher nicht weiter damit beschäftigt. dabei ist das eine wirklich interessante Sache. Danke für den Tip!

  3. Ralfvor 2 Jahre

    An die my-hacks.php habe ich jetzt spontan auch als erstes gedacht. Alternativ einfach ein Plugin schreiben das via include/require eine Snippet-Datei aus wp-content lädt. Der Vorteil ist das man für alle Themes nur eine Datei bearbeiten muss. So hat man die Snippets quasi an zentraler Stelle und kann sie auch in der functions.php includieren.

  4. Thomas Scholzvor 2 Jahre

    Ich bin nach vielen Experimenten zu dem Schluß gekommen: Pro Aufgabe ein normales Plugin. Also keines, das mehrere unabhängige Aufgaben kombiniert, sich nicht abschalten läßt oder dessen Herkunft, Beschreibung und Versionsnummer nicht sofort sichtbar sind.

    Die Menge der aktivierten Plugins ist praktisch egal. Jede Installation braucht aber eine leicht andere Kombination der Funktionen, und bei Problemen möchte ich sie einzeln ab- und anschalten können. Obendrein habe ich so einen separaten Commit-Verlauf und die Möglichkeit, irgendwann ein öffentliches Plugin daraus zu machen.

  5. Kennyvor 1 Jahr

    Bisher habe ich immer die Variante über die functions.php genutzt, aber das Snippets Plugin gefällt mir besser, werde es mal ausprobieren.

Auch deine Meinung ist mir wichtig

Hey! Hier kannst du deine Meinung, Feedback oder Ergänzungen teilen. Bleib dabei bitte höflich.
Achte auch darauf, dass jeglicher Spam(versuch) kommentarlos gelöscht wird. Notwendige Felder sind mit einem * markiert. Deine E-Mail Adresse wird nicht veröffentlicht.