Nachricht im Admin Dashboard nach Plugin Update

Inhaltsverzeichnis

Problemstellung

Mitunter kommt es vor dass spezifische Änderungen auf einer WordPress Seite, speziell in einem WordPress Plugin nicht via Plugin oder per functions.php eingebunden werden können. Wenn die Anpassungen jedoch für das entsprechende Projekt wichtig sind, müssen Entwickler auch den etwas “unschöneren” Weg gehen und diese direkt in ein Plugin implementieren.

Der große Nachteil liegt auf der Hand – bei jedem Update des entsprechenden Plugins, werden die Änderungen überschrieben und man muss dies manuell wieder einbauen.

Aus diesem Grund wird natürlich klar dass diese Option nur in absoluten Ausnahmefällen verwendet werden sollte.

Bei einem Kundenprojekt gab es diese “Ausnahme” und damit der Kunde nach dem nächsten Update nicht vergisst, diese Änderungen auch wieder einzupflegen, wurde ihm eine kleine “PopUp Message” gebaut, die nach dem Update des entsprechenden Plugins angezeigt wird.

Erstellung und Einbau des Snippets

Hier die entsprechende Anleitung und das Code Snippet um eine solche Meldung anzuzeigen.

Wichtig! In unserem Fall wird der Code in die functions.php eingebunden. Daher ist die Verwendung eines Child Themes Pflicht!

In unserem Beispiel möchten wir die Nachricht nach dem Update des WordPress Plugins “wpForo” anzeigen.

Der Code für die functions.php lautet wie folgt:

//PopUp admin dashboard after wpforo update
function check_wpforo_update($upgrader_object, $options) {
  if ($options['action'] == 'update' && $options['type'] == 'plugin') {
    foreach ($options['plugins'] as $plugin) {
      if ($plugin == 'wpforo/wpforo.php') {
        set_transient('wpforo_updated', true, 5 * MINUTE_IN_SECONDS);
      }
    }
  }
}

function show_wpforo_update_notice() {
  if (get_transient('wpforo_updated')) {
    ?>
    <script type="text/javascript">
      jQuery(document).ready(function($) {
        $('body').append('<div id="wpforo-notice-popup" style="display: none; background-color: #333333; color: #ffffff; padding: 20px; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10000; font-size: 18px; max-width: 80%; text-align: center; border-radius: 17px;"><p style="font-size: 18px; line-height: 1.5;">wpForo wurde aktualisiert. Bitte denke daran, die Datei wpforo/classes/posts.php erneut anzupassen.</p><button onclick="jQuery(\'#wpforo-notice-popup\').hide();" style="font-size: 18px;">OK</button></div>');
        $('#wpforo-notice-popup').show();
      });
    </script>
    <?php
    delete_transient('wpforo_updated');
  }
}

add_action('upgrader_process_complete', 'check_wpforo_update', 10, 2);
add_action('admin_notices', 'show_wpforo_update_notice');


Code-Sprache: PHP (php)

Was macht dieses Snippet im Detail? Hier für euch noch einmal jede Zeile erläutert:

// PopUp im Admin-Dashboard nach wpforo-Update
function check_wpforo_update($upgrader_object, $options) {
  // Überprüfen, ob die Aktion ein Plugin-Update ist
  if ($options['action'] == 'update' && $options['type'] == 'plugin') {
    // Durchlaufen Sie alle Plugins, die aktualisiert werden
    foreach ($options['plugins'] as $plugin) {
      // Überprüfen, ob das Plugin wpForo ist
      if ($plugin == 'wpforo/wpforo.php') {
        // Setzen einer temporären Transient-Variable, um anzuzeigen, dass wpForo aktualisiert wurde
        set_transient('wpforo_updated', true, 5 * MINUTE_IN_SECONDS);
      }
    }
  }
}

function show_wpforo_update_notice() {
  // Überprüfen, ob die Transient-Variable gesetzt ist (d.h., ob wpForo aktualisiert wurde)
  if (get_transient('wpforo_updated')) {
    ?>
    <script type="text/javascript">
      jQuery(document).ready(function($) {
        // Hinzufügen eines Popup-Divs zum Body (es bleibt zunächst ausgeblendet)
        $('body').append('<div id="wpforo-notice-popup" style="display: none; background-color: #333333; color: #ffffff; padding: 20px; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10000; font-size: 18px; max-width: 80%; text-align: center; border-radius: 17px;"><p style="font-size: 18px; line-height: 1.5;">wpForo wurde aktualisiert. Bitte denke daran, die Datei wpforo/classes/posts.php erneut anzupassen.</p><button onclick="jQuery(\'#wpforo-notice-popup\').hide();" style="font-size: 18px;">OK</button></div>');
        // Anzeigen des Popup-Divs
        $('#wpforo-notice-popup').show();
      });
    </script>
    <?php
    // Löschen der Transient-Variable, da die Benachrichtigung bereits angezeigt wurde
    delete_transient('wpforo_updated');
  }
}

// Hinzufügen der check_wpforo_update-Funktion zum Hook 'upgrader_process_complete'
add_action('upgrader_process_complete', 'check_wpforo_update', 10, 2);
// Hinzufügen der show_wpforo_update_notice-Funktion zum Hook 'admin_notices'
add_action('admin_notices', 'show_wpforo_update_notice');
Code-Sprache: PHP (php)

So sieht die Nachricht dann entsprechend aus. Wichtig, diese erscheint erst nach dem reload der Seite oder eben dem Aufruf einer neuen Unterseite.

info message admin dashboard

Wie passe ich das Snippet für meinen speziellen Fall an?

In unserem Fall wollten wir diese Nachricht anzeigen wenn das WordPress Foren Plugin wpForo upgedatet wird.

Natürlich könnt ihr den Code auch für jedes andere Plugin verwenden. Ändert dafür einfach die entsprechenden Bereiche von wpForo auf das Plugin “eurer Wahl”

Grundsätzlich ist dieser Part ” if ($plugin == ‘wpforo/wpforo.php’) {” – der wichtige Bereich. Hier tragt ihr den Pfad eurer Plugin.php ein – z.B. /buddypress/buddypress.php

Christian Pust
WordPress & Onlinemarketing Experte mit über 15 Jahren Erfahrung. Entwickler & CEO von Trackboxx – der Google Analytics Alternative.

Eine Antwort

  1. Cool, nach so einer Option habe ich gerade gesucht da ich bei einem Kunden ebenfalls direkt in einem Plugin etwas ändern musste. Gibt es auch die Option die Info einfach als Nachricht bei den “normalen” Messages oben an der Seite anzuzeigen, eventuell etwas auffälliger. Bin absolut kein Fan von Popups.

Schreibe einen Kommentar

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

Das könnte dich auch interessieren

Du benötigst Unterstützung bei deinem WordPress Projekt?

Dein Ansprechpartner
Christian