Ich habe ein Plugin, das nicht aktiviert werden soll, wenn es eine bestimmte WP-Versionsnummer nicht erfüllt. Dann wird im Aktions-Hook admin_notices eine Fehlermeldung angezeigt. Soweit ich recherchiert habe, ist der folgende Code der beste, mit dem ich dieses Ziel erreichen kann:
$wp_version = get_bloginfo('version');
if ( $wp_version < 4.5 ) {
add_action( 'admin_init', 'deactivate_plugin_now' );
add_action( 'admin_notices', 'errormsg' ) );
}
public function deactivate_plugin_now() {
if ( is_plugin_active('myplugin/myplugin.php') ) {
deactivate_plugins('myplugin/myplugin.php');
}
}
public function errormsg () {
$class = 'notice notice-error';
$message = __( 'Error you did not meet the WP minimum version', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
}
Aber ich denke, ich mache es immer noch falsch, weil ich gleichzeitig mit dem von mir zugewiesenen Fehlerhinweis die Plugin-aktivierte Meldung erhalte.
Was wäre der richtige Aktions-Hook / Filter, um den Plugin-Aktivierungsprozess ordnungsgemäß zu stoppen, sodass nur die Fehlermeldung angezeigt wird?
plugins
plugin-development
Carl Alberto
quelle
quelle
Antworten:
Ich kann zu spät zu dieser Party kommen, aber um die Plugin-Aktivierung zu stoppen und WordPress eine Fehlermeldung anzeigen zu lassen, wo die Administrator-Benachrichtigungen hingehen, gebe ich einfach eine Fehlermeldung aus und beende die Ausführung. Dies hat den zusätzlichen Vorteil, dass man mit wp-cli gut spielen kann :
Beispiel:
quelle
Im Wesentlichen können Sie es nicht so machen, wie Sie wollen. Alle WordPress-Formulare werden nach Abschluss ihres Vorgangs umgeleitet und generieren keine eigene Ausgabe. Daher wird die Fehlermeldung auf einer anderen Seitenanforderung generiert. Wenn Ihr Plugin zu diesem Zeitpunkt nicht aktiv ist, wird keine Meldung angezeigt. Eine weitere Komplikation ist, dass Plugins möglicherweise von Ajax aktiviert werden.
Eine hässliche, aber funktionierende Methode besteht darin, die Aktivierung durch Generieren eines PHP-Fehlers fehlzuschlagen, oder IIRC wird jede Ausgabe ausführen. Sie können also einfach so etwas wie "Versionsinkongruenz" im Plugin-Aktivierungs-Hook ausgeben, der im Fehlerausgabefeld angezeigt wird wird angezeigt, wenn die Aktivierung fehlschlägt.
Denken Sie darüber nach: Die Leute könnten Ihre Plugin-Dateien einschließen oder sie auf irgendeine Weise gewaltsam aktivieren, indem sie die Benutzeroberfläche umgehen oder wp-cli verwenden. Abhängig von den Gründen, aus denen Sie die Aktivierung fehlschlagen möchten, ist es möglicherweise besser, nur die Fehlermeldung zu erhalten, als zu versuchen, die Aktivierung fehlzuschlagen
quelle
Da Sie den Titel aktualisiert haben, muss ich die andere Antwort geben, die vorherige bitte nicht ignorieren, da sie noch einfacher ist als diese.
Bitte beachten Sie, dass Sie beim Versuch, das Plugin zu aktivieren, mit der Datei plugins.php interagieren. Dort haben Sie eine große Auswahl an Aktionen, die Sie ausführen können.
Und falls Sie den Fehler gerade eingestellt
$_GET['error']
haben, haben Sie nur die vordefinierten Fehlermeldungen - Sie können keine eigene benutzerdefinierte Meldung erstellen. Deshalb habe ich Ihnen diese Lösung vorgeschlagen.Man kann die benutzerdefinierten Nachrichten als Administratorbenachrichtigungen an den WordPress-Kern vorschlagen, falls Plugins einige Anforderungen nicht erfüllen.
quelle
admin_notices
nicht aus. Wenn Sie also auf die Umleitungs-URL klicken, wird die angehängte Funktion nicht ausgelöst.Wie wäre es mit diesem Code, um hello.php (Hello Dolly) zu unterdrücken, wenn WP <8.5:
Ich denke, das ist gut, weil es Sie nicht zwingt, Administratorbenachrichtigungen zu erstellen. Sie erhalten einfach das Feedback zum Grund für den Abbruch der Plugin-Installation.
Ich habe diesen Code für HelloDolly hinzugefügt, aber Sie müssen ihn anpassen.
quelle