Skip to content

Instantly share code, notes, and snippets.

@franz-josef-kaiser
Last active August 30, 2019 13:04
Show Gist options
  • Save franz-josef-kaiser/4319475 to your computer and use it in GitHub Desktop.
Save franz-josef-kaiser/4319475 to your computer and use it in GitHub Desktop.
Gibt für Kunden Notizen über Änderungen zu WordPress im Adminbereich aus.
<?php
/**
* Plugin Name: Info zu WP-Änderungen
* Description: Informiert Kunden über Änderungen im WordPress Core, der Sprachdatei, etc.
* Version: 15122012.1423
* Author: Franz Josef Kaiser <wecodemore@gmail.com>
* Author URI: https://plus.google.com/107110219316412982437/posts
* License: The MIT License (MIT)
* LicenseURI: http://www.opensource.org/licenses/mit-license.php
*/
# Kein Direktzugriff auf diese Datei.
defined( 'ABSPATH' ) OR exit;
/**
* Gibt für Kunden Notizen über Änderungen zu WordPress im Adminbereich aus.
* Kann auch für jede andere Art von Anmerkung genutzt werden.
* @author Franz Josef Kaiser <wecodemore@gmail.com>
* @since 15122012.1423
* @return array $messages
*/
function oxo_change_notes()
{
// Zuerst schauen wir einmal, ob der User überhaupt ausreichend Rechte hat:
// Wir gehen davon aus, dass der Kunde die Rolle "Editor" inne hat.
// Hat er die notwendigen Berechtigungen nicht, brechen wir frühzeitig ab.
// Mehr dazu hier @link http://codex.wordpress.org/Roles_and_Capabilities
if ( ! current_user_can( 'edit_others_posts' ) )
return;
// Diese Globale enthält die Nachrichten von WordPress für
// z.B.: aktivierte Plugins, gespeicherte Artikel/Beiträge, etc.
global $messages;
// Als erstes legen wir uns eine neue Variable als Array an, um unsere
// Nachrichten für unsere Kunden zu sammeln.
$new_msg[] = "Lieber Kunde!<br />
Mit der neuen WordPress Version haben sich einige Dinge geändert.
Aber keine Angst, es funktioniert alles weiterhin, nur eben etwas anders.";
// Weitere Meldungen werden hier angefügt. Für jede Meldung einen neuen Block machen.
$new_msg[] = '';
// Will man Meldungen nur für bestimmte Seiten ausgeben, dann kann man
// das Object nutzen welches von "get_current_screen()" zurück gegeben wird.
// Mehr info dazu mit diesem Plugin: "Current Admin Info" (vom selben Autor).
// @link https://github.com/franz-josef-kaiser/current-admin-info
// @example Dieses Beispiel zeigt nur etwas für "Post" screens
/*
if ( 'post' === get_current_screen()->post_type )
{
$new_msg[] = 'Hallo und Willkommen im Artikel-/Beitragsbereich';
}
*/
// Nun wollen wir noch zeigen, dass wir wirklich hilfreich sind und
// geben dem Kunden unsere Daten, falls dann doch noch etwas schief
// gehen oder komplett unklar sein sollte. Bitte Daten einfüllen.
$new_msg[] = sprintf(
"Wir w&uuml;nschen Ihnen und Ihrer Familie eine friedliche
und angenehme Weihnachtszeit, sowie viel Freude mit der neuen Version.<br />
<em>Ihr/e [NAME HIER EINFÜGEN]. Tel.: 01/234 456 DW 78, Mail: %s, %s</em>"
,'<a href="mailto:ME@EXAMPLE.COM">ME@EXAMPLE.COM</a>'
,'w<sup>3</sup>: <a href="HTTP://EXAMPLE.COM">EXAMPLE.COM</a>'
);
// Erst einmal leeren wir das Globale Array und speichern die Meldungen
// des WordPress core in einer neuen Variablen zwischen.
$old_msg = $messages;
$messages = array();
// Jetzt brauchen wir nur noch unsere neuen Nachrichten
// in das entsprechende, WordPress-konforme MarkUp einzupacken
// und dann an das globale Array der "Admin Notices" zu übergeben.
foreach ( $new_msg as $msg )
{
! empty( $msg ) AND $messages[] = "<div id='message' class='updated'><p>{$msg}</p></div>";
}
// Zu guter letzt fügen wir die alten Meldungen (vom core) an unsere
// Meldungen an, damit diese in der Priorität ganz oben stehen.
$old_msg = ! empty( $old_msg ) ?: array();
$messages = array_merge(
$messages
,$old_msg
);
}
is_admin() AND add_action( 'admin_notices', 'oxo_change_notes' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment