Mam wtyczkę, której nie chcę aktywować, jeśli nie spełnia ona określonego numeru wersji WP, a następnie wyświetla komunikat o błędzie w haczyku czynności administratora. O ile badałem, poniższy kod jest najlepszym, jaki mogę osiągnąć ten cel:
$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 );
}
Ale myślę, że nadal robię to źle, ponieważ otrzymuję komunikat aktywacji wtyczki w tym samym czasie z powiadomieniem o błędzie, które przypisałem.
Jaki byłby właściwy hak / filtr akcji, aby poprawnie zatrzymać proces aktywacji wtyczki, więc dostanę tylko komunikat o błędzie?
plugins
plugin-development
Carl Alberto
źródło
źródło
Odpowiedzi:
Mogę się spóźnić na tę imprezę, ale aby zatrzymać aktywację wtyczki i pozwolić WordPressowi wyświetlać komunikat o błędzie w miejscu, w którym idą powiadomienia administratora, po prostu wysyłam komunikat o błędzie i kończę wykonywanie. Ma to tę dodatkową zaletę, że fajnie się gra z wp-cli :
Przykład:
źródło
Zasadniczo nie możesz tego zrobić tak, jak chcesz. Wszystkie formularze Wordpress przekierowują po zakończeniu procesu i nie generują wyników samodzielnie, dlatego komunikat o błędzie jest generowany na innym żądaniu strony. Jeśli wtyczka nie będzie aktywna w tym momencie, nie zostanie wyświetlony żaden komunikat. Dalszą komplikacją jest to, że wtyczki mogą być aktywowane przez Ajax.
Brzydkim, ale działającym sposobem jest niepowodzenie aktywacji przez wygenerowanie błędu php lub IIRC, które zrobi dowolne wyjście, więc możesz po prostu wypisać coś takiego jak „niezgodność wersji” w haczyku aktywacyjnym wtyczki, który zostanie wyświetlony w polu wyjściowym błędu, który wyświetla się, gdy aktywacja się nie powiedzie.
Coś do przemyślenia: ludzie mogą dołączyć twoje pliki wtyczek lub w jakiś sposób aktywować je siłą, omijając interfejs użytkownika lub używając wp-cli. w zależności od powodów niepowodzenia aktywacji, komunikat o błędzie może być lepszy niż próba niepowodzenia aktywacji
źródło
Ponieważ zaktualizowałeś tytuł, muszę podać inną odpowiedź, poprzedniej nie należy ignorować, ponieważ jest ona jeszcze prostsza niż ta.
Pamiętaj, że kiedy próbujesz aktywować wtyczkę, wchodzisz w interakcję z plikiem plugins.php. Tam masz duży przełącznik akcji, które możesz uruchomić.
A jeśli
$_GET['error']
w tej chwili masz ustawiony błąd , masz tylko predefiniowane komunikaty o błędach - nie możesz utworzyć własnego komunikatu niestandardowego. Dlatego zaproponowałem ci takie rozwiązanie.Można zaproponować niestandardowe wiadomości jako powiadomienia administracyjne do rdzenia WordPress, w przypadku gdy wtyczki nie spełniają niektórych wymagań.
źródło
admin_notices
jest podłączone, nie jest uruchamiana.Co powiesz na ten kod, aby pominąć hello.php (Hello Dolly), jeśli WP <8.5:
Myślę, że to dobrze, ponieważ nie zmusza cię do tworzenia powiadomień administratora. Po prostu otrzymasz informację zwrotną o przyczynie przerwania instalacji wtyczki.
Dodałem ten kod do HelloDolly, ale będziesz musiał go dostosować.
źródło