Eigenes (MU-)Plugin für Anpassungen erstellen

Der Unterschied zwischen einem regulären und einem MU-Plugin in WordPress ist:
MU-Plugins sind automatisch aktiv, sobald sie in einen bestimmten Ordner in WordPress hochgeladen wurden. (MU steht für „must use“.)

Inhalt

MU-Plugin erstellen

1
Lege einen neuen Ordner mu-plugins innerhalb von wp-content an.
Falls der Ordner mu-plugins dort schon existiert, verwende den existierenden.
2
Lege eine neue Datei an und speichere ein paar Zeilen Code darin. Nutze dafür einen Code- oder Texteditor.
Um schneller voran zu kommen, kannst du mit dem Beispiel-Plugin am Ende dieses Artikels beginnen.
3
Speichere die Datei unter einem beliebigen Namen, aber nutze ausschließlich lateinische Kleinbuchstaben, Ziffern, und Bindestriche im Dateinamen. Zum Beispiel:
wp-rocket-custom.php
4
Lade die Datei in den Ordner mu-plugins aus Schritt 1 hoch.
5
Zuletzt deaktiviere und re-aktiviere WP Rocket einmal.

Hinweis: Du kannst auch ein reguläres Plugin anstelle des MU-Plugins erstellen, indem du einfach dieselbe Datei in wp-content/plugins anstelle von mu-plugins ablegst. Das reguläre Plugin musst du dann auf der Plugins-Seite in deinem WP-Admin aktivieren.

Checkliste: Bitte bedenken!

  • Teste dein Plugin in einer geschützten Umgebung, bevor du es „live“ auf deiner produktiven Website installierst!
    Denke daran, dass bereits ein fehlendes Semiokolon in PHP zu einer fehlerhaften Anzeige führen kann. Falls irgendetwas kaputt geht, lösche die Plugin-Datei.
  • Dein Texteditor muss sich im Plain-Text-Modus befinden, wenn du Code bearbeitest!
    Rich-Text würde deinen Code komprimittieren, PHP-Fehler erzeugen, oder sogar zu einer (temporär) zerstörten Website führen.
  • MU-Plugins werden in WordPress automatisch in alphabetischer Reihenfolge ihrer Dateinamen geladen.
  • Falls du, warum auch immer, eine in WP Rocket existierende Funktion benutzt, rufe sie immer mit folgender umschließenden Kondition auf. Ein Beispiel:
    if ( function_exists( 'rocket_clean_domain' ) ) { 
    	// hier tust du etwas mit rocket_clean_domain()
    }
    	
  • Noch einmal, deaktiviere und re-aktiviere WP Rocket auf jeden Fall einmal, sobald du dein eigenes Plugin hochgeladen hast.

Beispiel für ein MU-Plugin

Für den Fall, dass du den Code von hier kopierst und einfügst und es danach zu Fehlern kommt, lade stattdessen dieses Gist herunter. Stelle außerdem sicher, dass in deinem Texteditor die UTF-8-Codierung für Dateien angewendet wird.

<?php
/**
 * Plugin Name: WP Rocket | Dein Plugin-Name hierhin
 * Description: Kurze Beschreibung deines Plugins hierhin
 * Author:      dein Name hierhin
 * License:     GNU General Public License v3 or later
 * License URI: http://www.gnu.org/licenses/gpl-3.0.html
 */

// Basic security, prevents file from being loaded directly.
defined( 'ABSPATH' ) or die( 'Cheatin&#8217; uh?' );

/* Prefix your custom functions!
 *
 * Function names must be unique in PHP.
 * In order to make sure the name of your function does not
 * exist anywhere else in WordPress, or in other plugins,
 * give your function a unique custom prefix.
 * Example prefix: wpr20151231
 * Example function name: wpr20151231__do_something
 *
 * For the rest of your function name after the prefix,
 * make sure it is as brief and descriptive as possible.
 * When in doubt, do not fear a longer function name if it
 * is going to remind you at once of what the function does.
 * Imagine you’ll be reading your own code in some years, so
 * treat your future self with descriptive naming. ;)
 */

/**
 * Pass your custom function to the wp_rocket_loaded action hook.
 *
 * Note: wp_rocket_loaded itself is hooked into WordPress’ own
 * plugins_loaded hook.
 * Depending what kind of functionality your custom plugin
 * should implement, you can/should hook your function(s) into
 * different action hooks, such as for example
 * init, after_setup_theme, or template_redirect.
 * 
 * Learn more about WordPress actions and filters here:
 * https://developer.wordpress.org/plugins/hooks/
 *
 * @param string 'wp_rocket_loaded'         Hook name to hook function into
 * @param string 'yourprefix__do_something' Function name to be hooked
 */
add_action( 'wp_rocket_loaded', 'yourprefix__do_something' );

/**
 * Define your custom function here.
 * This example just returns true.
 * 
 * @return bool Boolean value TRUE
 */
function yourprefix__do_something() {
	return true;
}