Verwenden von WordPress admin_notices in einem OOP-Plugin

Lesezeit: 3 Minuten

Benutzer-Avatar
OzTheGreat

Ich habe eine neue Admin-Seite in WordPress registriert, auf der ich Ausgabe-HTML und -format anzeige und einige Eingaben validiere und in der DB speichere. Alles funktioniert super. Was nicht wirklich funktioniert, ist die Verwendung des admin_notices-Hooks, um Fehler-/Aktualisierungsmeldungen anzuzeigen. Ich vermute, ich kann diesen Hook nicht innerhalb der add_menu_page-Funktion aufrufen? Wenn ja, wie sollen Sie mit Fehlern auf benutzerdefinierten Seiten in OOP-Plugins umgehen?

Ich habe eine sehr abgespeckte Version des Codes unten eingefügt.

class Fitems_Admin {

    public $admin_notices = array();

    public function __construct(){
        // Register Menus
        add_action( 'admin_menu', array( $this, 'register_menus' ) );
    }

    public function register_menus(){
        add_menu_page( 'fItems', 'fItems', 'administrator', 'fItems', array( $this, 'items' ) );
    }

    public function items(){
        // do stuff, validate input & register any errors, example below
        $this->admin_notices['updated'][] = __( 'item(s) successfully deleted.', 'fItems' );
        // Register errors
        add_action( 'admin_notices', array( $this , 'display_admin_notices' ) );
        // display output;
        echo $output;
    }

    // Just formats and echos any errors in the $this->admin_notices array();
    public function display_admin_notices( $return = FALSE ){
        if( ! empty( $this->admin_notices ) ){
            // Remove an empty and then sort
            array_filter( $this->admin_notices );
            ksort( $this->admin_notices );
            $output="";
            foreach( $this->admin_notices as $key => $value ){
                // Probably an array but best to check
                if( is_array( $value ) ){
                   foreach( $value as $v ){
                       $output .= '<div class="' . esc_attr( $key ) . '"><p>' . esc_html( $v ) . '</p></div>';
                   }
                } else {
                    $output .= '<div class="' . esc_attr( $key ) . '"><p>' . esc_html( $value ) . '</p></div>';
                }
            }
            if( $return ){
                return $output;
            } else {
                echo $output;
            }
        }
    }
}

  • Probieren Sie es aus, es könnte funktionieren! Speichern Sie alle Ihre Benachrichtigungen in einer Variablen $error_notices $error_notices = $this->admin_notices['updated'][] = __( 'item(s) successfully deleted.', 'fItems' ); function my_admin_notice() { global $error_notices; echo $error_notices; } add_action( 'admin_notices', $this->my_admin_notice );

    – Rameez SOOMRO

    28. Oktober 2013 um 18:38 Uhr

Benutzer-Avatar
brasophilo

Admin Notices werden dafür nicht verwendet und der Haken funktioniert nicht an der Stelle, an der Sie ihn setzen. Und um es gezielt auszulösen, verwenden wir get_option oder get_user_meta.

Für diese Art von Notizverwenden wir Admin-Klassen:

if( $success )
    echo '<div class="updated"><p>class .updated with paragraph</p></div>';

if( $error )
    echo '<div class="error"><p>class .error with paragraph</p></div>';

Hier ist ein Hilfs-Plugin zum Gestalten unserer Admin-Bildschirme: WordPress-Admin-Stile.

Oder verwenden Sie das Ganze Einstellungs-APIdie eine Funktion hat add_settings_error() um Hinweise anzuzeigen, wird es trotz des Namens zur Anzeige verwendet update und error Mitteilungen.

  • Humm, ok, also habe ich es beim ersten Mal richtig gemacht. Ich denke, Sie können ein wenig verrückt werden, wenn Sie versuchen, so viele in WordPress integrierte Funktionen wie möglich zu verwenden !! Vielen Dank.

    – OzTheGreat

    28. Oktober 2013 um 20:37 Uhr

  • Interessant. Es ist jedoch nicht wirklich eine Einstellungsseite (oder verwendet eine der Einstellungs-APIs), sondern ein benutzerdefiniertes Formular. Die Frage ist, ob add_settings_error() nur in Verbindung mit der Einstellungs-API oder als allgemeine Fehler-/Benachrichtigungsfunktion verwendet werden soll. Ich denke ersteres?

    – OzTheGreat

    29. Oktober 2013 um 11:09 Uhr

  • Wir können diese Funktion nur bei Verwendung der API ausführen. . . . . Und wir können die API in jedem unserer benutzerdefinierten Plugin- oder Themenseiten frei verwenden. Dieses Beispiel kompiliert nicht für einige Fehlkonfigurationen, aber das ist die Idee.

    – Brasilo

    29. Oktober 2013 um 11:21 Uhr


  • Wie stellen Sie nach der Weiterleitung fest, ob es sich um einen Erfolg oder einen Fehler handelt?

    – Radmation

    26. Juli 2018 um 22:22 Uhr

1352060cookie-checkVerwenden von WordPress admin_notices in einem OOP-Plugin

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

Privacy policy