So geben Sie eine Nachricht während der Plugin-Aktivierung aus

9

Ich entwickle ein Plugin, aber während der Aktivierungsphrase bin ich ständig mit Fehlern konfrontiert. Es gibt jedoch keine einfache Möglichkeit, Fehlermeldungen anzuzeigen, da das Echo von Daten zu einem Fehler bei der nicht erwarteten Ausgabe führen würde. Ich habe den Hook admin_message ausprobiert, aber er funktioniert nicht. Wie kann ich den Benutzer benachrichtigen, wenn eine Phase der Aktivierung mit gutem Grund fehlgeschlagen ist?

lulalala
quelle

Antworten:

9

Zu Testzwecken können Sie das Protokollsystem (php_error.log) verwenden:

error_log('Plugin activated', 0);

// Check for DB table existance
if(!$this->hasDBTable()){
    error_log('Database not present', 0);
    if($this->createCELabelsDBTables()){
        error_log('Database was created.', 0);
    } else {
        error_log('Error creating the CE Labels Plugin db tables!', 0);
    }

} else {
    error_log('Database OK', 0);
}

Um dem Benutzer einen Fehler ohne den Fehler "Header bereits gesendet" auszugeben, können Sie die PHP-Funktion trigger_error verwenden:

trigger_error('PLUGIN OK',E_USER_ERROR);

Bei Wordpress muss immer E_USER_ERROR sein, sonst wird die Nachricht nicht angezeigt.

Ich weiß, dass das error_log einwandfrei funktioniert, da ich es verwende, aber der trigger_error zeigt die erforderlichen Informationen an. Probieren Sie es aus und überzeugen Sie sich selbst :)

Domingos Freitas
quelle
Wissen Sie, wo ich weitere Dokumentation zur Funktion error_log finden kann? Ich habe Schwierigkeiten herauszufinden, wie es funktioniert.
Nathan Arthur
Für diejenigen, die danach kommen können: php.net/manual/en/function.error-log.php
Nathan Arthur
3

LÖSUNG:

register_activation_hook( __FILE__, 'my_activation_func' ); function my_activation_func() {
    file_put_contents(__DIR__.'/my_loggg.txt', ob_get_contents());
}

Fügen Sie diesen Code in das Plugin ein und zeigen Sie nach einem Fehler "my_loggg.txt" in Ihrem Plugin-Ordner an.

T.Todua
quelle
Das hat bei mir funktioniert, aber ich musste es am Ende der Datei einfügen! Andernfalls wurde die Ausgabe nicht erfasst.
Ben Ogorek
0

1) Bitte entfernen Sie zusätzlichen Abstand auf den Innenseiten oder Pluginseiten.

2) Entfernen Sie das Inline-Styling auf den Seiten oder Plugin-Seiten.

Es hat jedes Mal für mich funktioniert. Ich habe viele Male die gleiche Methode verwendet. wenn das Problem Fehler in der Plugin-Seite oder Wordpress-Seite.

Grüße,

Hitesh Nagpal

Hitesh Nagpal
quelle