Verfügt Wordpress über eine integrierte Nachrichtenfunktion zum Anzeigen von Benachrichtigungen für Benutzer?

7

Hat Wordpress etwas Ähnliches wie die Funktion drupal_set_message von Drupal ? Ich möchte den Benutzer über etwas informieren und hatte gehofft, dass es einen eingebauten API-Aufruf gibt, um dies zu tun.

Etwas auf
quelle
Wo möchten Sie den Benutzer benachrichtigen? In WordPress ist nichts Vergleichbares integriert , daher müssen Sie entweder ein Plug-In finden oder Ihr eigenes mit etwas wie Toastr rollen (wenn Sie Popups möchten).
Joseph Leedy
Ein Kunde möchte, dass wir zur Startseite weiterleiten, wenn ein Mitwirkender einen Beitrag zur Überprüfung einreicht, anstatt zum Bildschirm zum Bearbeiten von Beiträgen zurückzukehren. Ich möchte den Benutzer darüber informieren, dass sein Beitrag gesendet wurde.
Etwas

Antworten:

3

Hier ist eine Idee: Verwenden Sie den save_postHook, um eine Sitzung mit der Nachricht festzulegen, die Sie dem Benutzer anzeigen möchten, und leiten Sie dann zur Startseite weiter. Überprüfen Sie in der Homepage-Vorlage, ob diese Sitzung vorhanden ist, und zeigen Sie dem Benutzer die Nachricht an.

Etwas wie das:

functions.php:

add_action( 'save_post', 'wpse60249_save_post' );

function wpse60249_save_post( $post_id ) {
    session_start();
    $_SESSION[ 'message' ] = __( 'Your text here...' );
}

index.php (oder entsprechende Vorlage):

if ( isset( $_SESSION[ 'message' ] ) :
    echo $_SESSION[ 'message' ];
    unset( $_SESSION[ 'message' ] );
endif;

Bearbeiten 21.10.2012

Als ich diese Antwort schrieb, wusste ich nicht, dass WordPress die $_SESSIONVariable zurücksetzt , aber ich habe das vor ein paar Wochen erfahren, als ich an einem Projekt für einen Kunden arbeitete. Vielen Dank für die Erinnerung an diese Frage, @kaiser! Hier ist aktualisierter Code, der stattdessen Transienten verwendet:

functions.php::

add_action( 'save_post', 'wpse60249_save_post' );

function wpse60249_save_post( $post_id ) {
    session_start();
    set_transient( 'temporary_message', __( 'Your text here...' ), 60*60*12 );
}

index.php (oder entsprechende Vorlage):

if ( false !== ( $temp_message = get_transient( 'temporary_message' ) ) :
    echo $temp_message;
    delete_transient( 'temporary_message' );
endif;
Joseph Leedy
quelle
Das habe ich mir gedacht ... aber WP unterstützt Sessions nicht so gut: s Ich werde sehen, was ich mir einfallen lassen kann. Danke;)
SomethingOn
Lesen Sie diesen Artikel .
Joseph Leedy
1
$_SESSIONfunktioniert in WP nicht richtig. Sie werden beim Start / Anforderungsstart vom Kern deaktiviert.
Kaiser
Sind Transienten irgendwie an den bestimmten Benutzer gebunden, der die Seite wie Sitzungen betrachtet? Würde der bearbeitete Code, der Transienten verwendet, nicht die Nachricht für alle Benutzer anzeigen? Obwohl mit dem Löschen das Zeitfenster ziemlich kurz ist, scheint es dennoch möglich zu sein, dass ein anderer Benutzer die Nachricht stattdessen oder auch erhält.
Benutzer
Sie vermissen eine Bremse in der else
helle
1

Es gibt ein Update und eine Fehlermeldung, die Sie am admin_noticesHook verwenden können.

Test Plugin

/* Plugin Name: Admin Notice w test message */
function wpse60244_custom_admin_notice()
{
    return print '<div id="message" class="updated fade"><p><strong>Hi!</strong> Look at me! In theory I should even fade out after a short time span!</p></div>';
}
add_action( 'admin_notices', 'wpse60244_custom_admin_notice' );

Sie können dies in Ihren Plugins-Ordner werfen und testen.

Nebenbemerkungen

Sie könnten - theoretisch auch den admin_headHook verwenden, um das Hinzufügen der Aktion auszulösen. Wenn Sie es nur auf bestimmten Bildschirmen / Seiten der Administrator-Benutzeroberfläche benötigen, suchen Sie nach global $taxnow, $pagenow;dem admin_head-{$hook_suffix}Hook oder verwenden Sie ihn .

Kaiser
quelle
Danke Kaiser; Das hatte ich vergessen. Ich nahm jedoch an, dass er wollte, dass die Nachricht im Frontend angezeigt wird. Übrigens: return print?! Hehe ;-)
Joseph Leedy
1
@ Joseph Heute etwas müde. Was ist mit return print?
Kaiser
Ich denke, das ist gültig - ich dachte, das printhat nichts zurückgegeben, aber laut den Dokumenten gibt es immer 1 zurück.
Joseph Leedy