Wohin mit den WordPress Codeschnipsel?

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.

7 versteckte Features in WordPress 3.2

#17184 Press This Bookmarklet Redesign

Neben der allgemeinen UI Überarbeitung wurden auch Elemente wie das Press This Bookmarklet einem Redesign unterzogen. Redesign des Press This Bookmarklets in WordPress 3.2

Aus einem einfachen Link wurde ein Button, mit CSS3 aufgepeppt, der das Drag&Drop Verhalten besser darstellt.
Angelehnt ist der Button an dem Bookmarklet Design von Readability.

#14405 Conditional Tag is_multi_author()

Der neue Conditional Tag is_multi_author ist einer von vielen und gibt TRUE aus, wenn im Blog mehr als ein Autor Artikel schreiben. Dazu ein Anwendungsbeispiel aus dem Twenty Eleven Theme:

/**
 * Fügt eine Klasse zum Array der Bodyklassen hinzu, wenn die Seite
 * nur einen Autor mit veröffentlichten Artikeln hat.
 *
 */
function twentyeleven_body_classes( $classes ) {

	if ( ! is_multi_author() ) {
		$classes[] = 'single-author';
	}
	return $classes;
}
add_filter( 'body_class', 'twentyeleven_body_classes' );

#17086 TinyMCE 3.4.2

Mit WordPress 3.2 kam auch ein Update des HTML WYSIWYG Editors – TinyMCE 3.4.2.

Mit diesem Update unterstützt der visuelle Editor nun nativ die HTML Tags <iframe>, <audio>, <video>.

Außerdem wurden die neuen HTML5 Tags auf die weiße Liste gesetzt, sodass sie nicht mehr entfernt werden.

#17291 Visuelle Kennzeichung von Hintergrund- und Kopfzeilenbild in der Mediathek

Mediathek zeigt Bildstatus an
Mediathek zeigt den aktuellen Bildstatus an (ähnlich dem Artikelstatus)

#17496 Neue Bodyklassen für Versionszweig, Versionsnummer und Farbschema

Wenn man zum Beispiel einen Hinweis nur für den aktuellen WordPress Zweig anzeigen möchte oder das Layout für eine bestimmte Version oder ein bestimmtes Farbschema anpassen muss, können die neuen Klassen einem das Umsetzen erleichtern.
Ein Beispiel:

<body class="wp-admin no-js index-php admin-bar branch-3-2 version-3-2-1 admin-color-fresh">

#15898 Kommentare Genehmigen und Antworten

Genehmigen und Antworten
Kommentar gleichzeitig genehmigen und antworten

#17240 Themes: Zufälliges Kopfzeilenbild

Interessant für Themeentwickler ist die Möglichkeit bei jedem Seitenaufruf ein neues, zufälliges Kopfzeilenbild anzuzeigen.
Dazu müssen entweder mehrere Bilder via register_default_headers() registriert oder vom Benutzer mehrere Bilder hochgeladen werden.

Mit folgender Zeile kann diese Option dann noch standardmäßig aktiviert werden:

add_theme_support( 'custom-header', array( 'random-default' => true ) );

Zum Schluss nur noch die Frage an die Leser:
Nachdem WordPress 3.2 nun schon ein paar Tage auf dem Markt ist, welches (versteckte) Feature gefällt denn euch am Besten?