WordPress modifizieren mit einem Site-Specific-Plugin

Divi & WordPress Tutorials

Es gibt unzählige WordPress PHP Snippets, mit denen sich Funktionen einfach erweitern oder abschalten lassen können. Diese können in der functions.php untergebracht werden, das macht aber nur Sinn wenn ein Child Theme genutzt wird. Ansonsten sind die Änderungen nach dem nächsten Theme Update weg. Ein weiterer Nachteil der functions.php ist, dass ihr bei einem Theme Wechsel daran denken müsst die Anpassungen ins neue Theme zu übernehmen.

Wir wollen euch zeigen, wie ihr diese Problematik ohne Performanceeinbußen mit einem kleinen Plugin lösen könnt. wir stellen euch dazu am Schluss des Artikels auch eine gezippte Version eines solchen Plugins zur Verfügung.

1. Wie kann ich ein Site-Specific-Plugin anlegen

In seiner einfachsten Form besteht ein solches Plugin aus genau einer einzelnen PHP Datei.

  1. Legt auf eurem Computer einen Ordner an mit dem Namen site-specific-plugin
  2. In diesem Ordner legt ihr mit dem Editor eurer Wahl (wir empfehlen Visual Studio Code oder Brackets) eine Datei an mit dem Namen site-specific-plugin.php.
  3. Der einzige zwingend notwendige Inhalt der Datei ist lediglich das folgende Snippet:
    <?php
    /*
    Plugin Name: Site Plugin for yoururl.com
    Description: Code Changes and Modifications for yoururl.com
    */
    /* Enter Code below this Comment - this comment can be removed */
      
    /* Enter Code above this Comment - this comment can be removed */
    ?>
  4. Zum Installieren des Plugins könnt ihr entweder den Ordner mit der Datei per FTP hochladen (Zielverzeichnis: /wp-content/plugins/) und danach über das WordPress Backend aktivieren (Dashboard – Plugins – Installierte Plugins – “Site Specific Plugin” aktivieren) oder ihr zippt den Ordner auf eurem Rechner und ladet in dann hoch über Dashboard – Plugins – Installieren. Ihr findet oben einen Button “Plugin hochladen” und könnt dort die zip-Datei auswählen. Danach wie gewohnt aktivieren.

Danach passiert erstmal – nix. Das Plugin enthält ja zu diesem Zeitpunkt noch keinen Code, der ausgeführt werden kann. Falls eure Seite danach nicht mehr aufrufbar ist (Serverfehler) hat sich ein Fehler in der Syntax eingeschlichen, ein häufiger Fehler ist das fehlende ?> am Ende der Datei. Ihr könnt dann z.B. die Datei per FTP bearbeiten oder erstmal per FTP den gerade installierten Pluginordner site-specific-plugin einfach löschen. Falls ihr euch nicht vertippt habt sehr in in eurer Pluginliste jetzt folgendes:

WordPress Site Specific Plugin nach Installation und Aktivierung

WordPress Site Specific Plugin nach Installation und Aktivierung

Die angezeigten Werte stammen wie ihr seht aus den jeweiligen Zeilen in der PHP Datei und können auf Wunsch angepasst werden.

Download einer Vorlage für ein Site-Specific-Plugin

Durch Klick auf den nachfolgenden Button könnt ihr eine Zip herunterladen, die ihr direkt in WordPress installieren könnt. Darin enthalten ist lediglich der Ordner, die PHP Datei sowie die folgenden Beispielsnippets, die ihr natürlich nach Belieben entfernen könnt. Aber achtet darauf, dass die oben dargestellten Elemente nicht löscht, dann kann das Ganze nicht mehr Funktionieren.

WordPress Site-Specific-Plugin

Du hast noch kein DIVI Theme? Dann hol dir jetzt das Theme mit 10 - 20% Rabatt!

Nützliche Snippets für ein Site-Specific-Plugin

Ihr habt ja sicherlich schon einen Hintergedanken, was die Nutzung dieses Plugins anbelangt. Die Bearbeitung könnt ihr in eurem Editor vornehmen und die Änderungen dann hochladen oder ihr nutzt die entsprechende Funktion eures WordPress Backends. Nachteil dieser Methode ist, dass ihr bei falschen Eingaben eventuell eure Seite zum Absturz bringt und dann nicht einfach per FTP die Änderungen rückgängig machen könnt oder Plugin per FTP schnell löschen/deaktivieren (durch umbenennen des Plugin Ordners) könnt. Darum empfehle ich immer die Nutzung eines Editors und eines (S)FTP Clients.

Bearbeitung Site-Specific-Plugin im Dashboard

Bearbeitung Site-Specific-Plugin im Dashboard

Beispiel 1: XML Schnittstelle deaktivieren (Sicherheitsrelevant, notwendig für Pingbacks und externe Anbindungen)

// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );

Kommentare könnt ihr für einzelne Zeilen mit // einfügen, damit ihr im Nachhinein noch wisst, was der Sinn des Codes war.

Beispiel 2: WordPress Emojis deaktivieren (DSGVO-relevant)

// emojis deaktivieren
add_filter( 'emoji_svg_url', '__return_false' );
function disable_emojis() {
  remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
  remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  remove_action( 'wp_print_styles', 'print_emoji_styles' );
  remove_action( 'admin_print_styles', 'print_emoji_styles' );	
  remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
  remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );	
  remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
  add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}
add_action( 'init', 'disable_emojis' );
// tinymce 
function disable_emojis_tinymce( $plugins ) {
  if ( is_array( $plugins ) ) {
    return array_diff( $plugins, array( 'wpemoji' ) );
  } else {
    return array();
  }
}

Beispiel 3: anzeigen der ausstehenden Updates bei fehlender Anzeige im Dashboard

Manchmal zeigt einem WordPress in der Dashboard-Topbar ein ausstehendes Update an, unter Dashboard – Aktualisierungen erscheint aber kein Plugin oder Theme zum Update. Um zu sehen welches Plugin diesen Fehler auslöst könnt ihr folgenden Code nutzen.

/**
 * Debug Pending Updates
 *
 * Displays hidden plugin and theme updates on update-core screen.
 */ 
function debug_pending_updates() {
  if ( ! is_user_logged_in() || ! current_user_can( 'update_plugins' ) || ! current_user_can( 'update_themes' ) ) return;
  
  $output = "";
  $plugin_updates = get_site_transient( 'update_plugins' );
  if ( $plugin_updates && ! empty( $plugin_updates->response ) ) {
    foreach ( $plugin_updates->response as $plugin => $details ) {
    $output .= "<p><strong>Plugin</strong> <u>$plugin</u> zeigt ein ausstehendes Update an.</p>";
    }
  }
  wp_update_themes();
  $theme_updates = get_site_transient( 'update_themes' );
  if ( $theme_updates && ! empty( $theme_updates->response ) ) {
    foreach ( $theme_updates->response as $theme => $details ) {
    $output .= "<p><strong>Theme</strong> <u>$theme</u> zeigt ein ausstehendes Update an.</p>";
    }
  }
  
  if ( empty( $output ) ) $output = "Keine ausstehenden Updates in der Datenbank vorhanden.";
  
  echo "<h2>Ausstehende Updates</h2>" . $output;
  }
  add_action( 'core_upgrade_preamble', 'debug_pending_updates' ); 

Unsere Divi Plugin Empfehlungen - macht euch das Leben leichter!

DIVI Header nach Wunsch mit MHMM

DIVI anpassen bis es nicht mehr geht mit DIVI Hacks

Blog Darstellung ganz anders mit Divi Blog Extras