Wie zeige ich eine Benachrichtigung im Admin-Bereich zur Plugin-Aktivierung an?

Lesezeit: 5 Minuten

Wie zeige ich eine Benachrichtigung im Admin Bereich zur Plugin Aktivierung an
Thompson

Ich versuche, einen Hinweis im Admin-Bereich anzuzeigen, wenn ich mein Test-Plugin aktiviere.
Wie kann ich das anzeigen? Was ist das für eine Methode?

1646636949 848 Wie zeige ich eine Benachrichtigung im Admin Bereich zur Plugin Aktivierung an
Küche

Für Plugin-Aktivierungen kann der Hook ‘admin_notices’ nicht direkt verwendet werden, da hier ein Redirect stattfindet. Eine Problemumgehung besteht darin, Ihre Benachrichtigung in der Optionstabelle zu speichern und beim nächsten Mal danach zu suchen. Wenn Sie außerdem Plugin-Upgrades sowie Aktivierungen abdecken möchten, müssen Sie einen anderen Hook verwenden, z. B. ‘admin_init’ (seit WP 3.1, siehe http://make.wordpress.org/core/2010/10/27/plugin-activation-hooks/).

Hier ist ein vollständiges Beispiel-Plugin, das sowohl die Aktivierung als auch das Upgrade handhabt. Ich habe die verzögerte Benachrichtigung zu einem Array gemacht, damit Sie sie stapeln können.

<?php
/*
Plugin Name: My Plugin
*/

register_activation_hook(__FILE__, 'my_plugin_activation');
function my_plugin_activation() {
  $notices= get_option('my_plugin_deferred_admin_notices', array());
  $notices[]= "My Plugin: Custom Activation Message";
  update_option('my_plugin_deferred_admin_notices', $notices);
}

add_action('admin_init', 'my_plugin_admin_init');
function my_plugin_admin_init() {
  $current_version = 1;
  $version= get_option('my_plugin_version');
  if ($version != $current_version) {
    // Do whatever upgrades needed here.
    update_option('my_plugin_version', $current_version);
    $notices= get_option('my_plugin_deferred_admin_notices', array());
    $notices[]= "My Plugin: Upgraded version $version to $current_version.";
    update_option('my_plugin_deferred_admin_notices', $notices);
  }
}

add_action('admin_notices', 'my_plugin_admin_notices');
function my_plugin_admin_notices() {
  if ($notices= get_option('my_plugin_deferred_admin_notices')) {
    foreach ($notices as $notice) {
      echo "<div class="updated"><p>$notice</p></div>";
    }
    delete_option('my_plugin_deferred_admin_notices');
  }
}

register_deactivation_hook(__FILE__, 'my_plugin_deactivation');
function my_plugin_deactivation() {
  delete_option('my_plugin_version'); 
  delete_option('my_plugin_deferred_admin_notices'); 
}

UPDATE: Es gibt auch eine gemeinsame Verwendung set_transient() anstatt update_option(), und um Nachrichten an den richtigen Admin-Benutzer weiterzuleiten. Dieser Beitrag betrifft Metaboxen, nicht die Plugin-Aktivierung, aber die Techniken funktionieren meines Wissens fast überall im Dashboard gleich: https://wordpress.stackexchange.com/questions/15354/passing-error-warning-messages-from-a-meta-box-to-admin-notices

  • Das sieht gut aus, mein einziger Kommentar wäre, den Teil zu TROCKNEN, an dem Sie eine neue Benachrichtigung hinzufügen.

    – pguardiario

    27. September 2014 um 7:52 Uhr

  • Ja, die drei Linien $notices= get_option(...); $notices[]=...; update_option(..., $notices) kann für allgemeine Zwecke abstrahiert werden my_plugin_add_notice() Funktion. Sie sehen dies oft bei einem Parameter für „Hinweis“ vs. „Fehler“. Dann zeigt die Rendering-Funktion es dann in der WP-Manier als blaues oder rotes Banner an, wobei die CSS-Klasse ‘update’ oder ‘error’ verwendet wird, wenn ich mich richtig erinnere.

    – Küche

    27. September 2014 um 18:40 Uhr


  • Super Lösung. Danke

    – Alaksandar Jesus-Gen

    5. Oktober 2020 um 12:31 Uhr

Dies ist so einfach, einen Hinweis anzuzeigen

function your_admin_notice(){
echo '<div class="updated">
   <p>I am a little yellow notice.</p>    
</div>';    
}
add_action('admin_notices', 'your_admin_notice');

Wenn Sie jedoch eine unzulässige Benachrichtigung anzeigen möchten, versuchen Sie es unten

    add_action('admin_notices', 'example_admin_notice');

function example_admin_notice() {
    global $current_user ;
        $user_id = $current_user->ID;
        /* Check that the user hasn't already clicked to ignore the message */
    if ( ! get_user_meta($user_id, 'example_ignore_notice') ) {
        echo '<div class="updated"><p>'; 
        printf(__('This is an annoying nag message.  Why do people make these? | <a href="https://stackoverflow.com/questions/9807064/%1$s">Hide Notice</a>'), '?example_nag_ignore=0');
        echo "</p></div>";
    }
}

add_action('admin_init', 'example_nag_ignore');

function example_nag_ignore() {
    global $current_user;
        $user_id = $current_user->ID;
        /* If user clicks to ignore the notice, add that to their user meta */
        if ( isset($_GET['example_nag_ignore']) && '0' == $_GET['example_nag_ignore'] ) {
             add_user_meta($user_id, 'example_ignore_notice', 'true', true);
    }
}

Und wenn Sie diesen Hinweis auf einer bestimmten Seite anzeigen möchten, versuchen Sie es mit der folgenden Bedingung.

    function my_admin_notice(){
    global $pagenow;
    if ( $pagenow == 'plugins.php' ) {
         echo '<div class="updated">
             <p>This notice only appears on the plugins page.</p>
         </div>';
    }
}
add_action('admin_notices', 'my_admin_notice');

Sie können hier sehen

  • Sehe ich das richtig, dass ich für jede Nachricht, die ich anzeigen möchte, eine Rückruffunktion erstellen muss? Wie würde ich eine Funktion erstellen, die einen Parameter übernimmt, der angibt, was die Fehlermeldung ist?

    – chizu

    21. Oktober 2015 um 5:29 Uhr

  • Ok, wenn Sie eine Fehlermeldung anzeigen möchten, gibt es tatsächlich andere Möglichkeiten. Um admin_notice mit Parameter anzuzeigen, können Sie hier die oberste Antwort versuchen. Sie können auch einen Weg über die folgenden Links finden: stackoverflow.com/questions/1242328/…

    – Ibnul Hasan

    23. Oktober 2015 um 16:04 Uhr

Verwenden Sie einfach eine <div class="updated">. Zum Beispiel –

echo "<div class="updated">Test Plugin Notice</div>";

  • Ja, aber dann wird dieser Hinweis ständig angezeigt, ich möchte, dass dieser Hinweis verschwindet, wenn ich in diesem Hinweis auf den Konfigurationslink klicke (nach der Aktivierung)

    – Thomson

    21. März 2012 um 15:00 Uhr

  • In diesem Fall müssen Sie nur ein Flag hinzufügen, das speichert, ob der Benutzer die Konfiguration des Plugins besucht hat. Sie können dieses Flag in speichern wp_options Tisch.

    – ronakg

    21. März 2012 um 15:01 Uhr


Sie können die neuen Admin-Hinweise verwenden, um sogenannte Admin-Zeiger mit zu erstellen show_wp_pointer_admin_bar.

Linky: http://wpengineer.com/2272/how-to-add-and-deactivate-the-new-feature-pointer-in-wordpress-3-3/

Der richtige Weg, Ihre Hinweise hinzuzufügen, besteht darin, sie in Ihrem Haken für zu wiederholen admin_notices Aktion:

function wpse8170_admin_notice(){
    echo '<div class="updated"><p>This is my notice.</p></div>';
}
add_action('admin_notices', 'wpse8170_admin_notice');

  • Aber es wird bei der Plugin-Aktivierung nicht als Frage angezeigt.

    – Programmrock

    26. Januar 2016 um 11:05 Uhr

Ich habe mich entwickelt amarkal-Admin-Benachrichtigung – ein Skript, mit dem Sie statische/unzulässige Administratorbenachrichtigungen hinzufügen und die Entlassung für Sie erledigen können. Dieses Skript ist ein Modul innerhalb des Amarkal WordPress-Frameworks.

Zum Beispiel:

amarkal_admin_notification( 'my-error-notice', __('Oh snap! This is an <strong>error</strong> message.','slug'), 'error');

  • Aber es wird bei der Plugin-Aktivierung nicht als Frage angezeigt.

    – Programmrock

    26. Januar 2016 um 11:05 Uhr

963850cookie-checkWie zeige ich eine Benachrichtigung im Admin-Bereich zur Plugin-Aktivierung an?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy