Buduję wtyczkę, która dodaje dodatkową funkcjonalność do głównej wtyczki. Idealnie na ekranie administrowania wtyczkami link „aktywuj” powinien być wyłączony i należy dodać notatkę, która mówi użytkownikowi, aby najpierw zainstalował i aktywował główną wtyczkę, zanim będzie mógł korzystać z bieżącej wtyczki.
plugin-development
Kosinix
źródło
źródło
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Odpowiedzi:
Dzięki za odpowiedzi chłopaki. Chociaż obie odpowiedzi postawiły mnie na właściwej ścieżce, żadna nie wyszła z pudełka. Dlatego dzielę się moimi rozwiązaniami poniżej.
Metoda 1 - Użycie register_activation_hook:
Utwórz wtyczkę nadrzędną we wtyczkach / parent-plugin / parent-plugin.php:
Utwórz wtyczkę podrzędną we wtyczkach / wtyczce podrzędnej / wtyczce podrzędnej.php:
Zauważ, że nie używam,
deactivate_plugins( $plugin );
ponieważ z jakiegoś powodu to nie działa. Użyłem wp_die, aby anulować przekierowanie aktywacyjne i poinformować użytkownika.Korzyść:
Niedogodności:
Metoda 2 - Korzystanie z admin_init i admin_notices
Utwórz wtyczkę nadrzędną we wtyczkach / parent-plugin / parent-plugin.php:
Utwórz wtyczkę podrzędną we wtyczkach / wtyczce podrzędnej / wtyczce podrzędnej.php:
Korzyść:
Niekorzyść:
Jeśli chodzi o moje pytanie dotyczące wyłączenia linku aktywacyjnego, mogę użyć:
Okazało się to jednak bardzo niepraktyczne, ponieważ nie ma miejsca na umieszczenie tego kodu. Nie mogłem umieścić go we wtyczce nadrzędnej, ponieważ wtyczka nadrzędna powinna być aktywna, aby ten kod działał. Z pewnością nie należy do wtyczki potomnej ani funkcji. Php. Więc złomuję ten pomysł.
źródło
Wypróbuj to, jest to skomentowane, aby pomóc Ci to zrozumieć.
Jeśli spowoduje to błąd, możesz również zaznaczyć opcję „myplugin” i ustawić ją na false lub nie aktywować.
źródło
Oba sugerowane rozwiązania mają wady.
Metoda 1: Jak wspomniano, ekran wp_die () nadal będzie wyświetlany, gdy wtyczka nadrzędna i wtyczka podrzędna zostaną aktywowane w tym samym czasie przy użyciu pól wyboru na ekranie administratora wtyczek.
Metoda 2: W niektórych przypadkach użycia nie jest to dobre, ponieważ „admin_init” jest wykonywany po „plugins_loaded” ( https://codex.wordpress.org/Plugin_API/Action_Reference ) i po haku deinstalacyjnym ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Na przykład, jeśli chcemy, aby dodatek uruchamiał jakiś kod podczas dezinstalacji, niezależnie od tego, czy wtyczka nadrzędna jest aktywna, czy nie, to podejście NIE zadziała.
Rozwiązanie:
Przede wszystkim musimy dołączyć następujący kod na końcu głównego pliku PHP wtyczki nadrzędnej:
Spowoduje to wysłanie zdarzenia / sygnału do wszystkich subskrybentów, informując, że wtyczka została załadowana.
Następnie klasa dodatku powinna wyglądać następująco:
Mam nadzieję, że to pomoże :)
źródło
Myślę, że potrzebujesz aktywacji wtyczki TGM .
źródło