Ich würde dagegen ermutigen, aber ich verstehe, was Sie versuchen, und mache selbst etwas Ähnliches.
Wie ich es mache
Ich erstelle Themen, die von Plugins abhängen, Plugins, die von Plugins abhängen, und Plugins, die von Plugins abhängen, die von anderen Plugins abhängen. Wenn ich beide Seiten der Entwicklung kontrolliere, mache ich Dinge in zwei Teilen ...
In dem Plugin, das von etwas anderem benötigt wird:
add_filter( 'my-cool-plugin-name-installed', '__return_true' );
In dem Plugin / Theme, für das das andere Plugin erforderlich ist :
if ( ! apply_filters( 'my-cool-plugin-name-installed', false ) )
add_action( 'admin_notices', 'my-cool-plugin-name_not_installed' );
Dann füge ich oben auf dem Admin-Bildschirm einen hellen Hinweis "Bitte installiere mein supercooles Plugin" mit einem Link zur Download-Seite hinzu.
Auf diese Weise kann ich auf todsichere Weise überprüfen, ob meine Abhängigkeiten vorhanden und installiert sind. Wenn das Plugin installiert, aber nicht aktiviert ist, wird die Warnung weiterhin angezeigt.
Ein anderer Weg
Eine weitere Option wurde bereits von @tollmanz empfohlen. Ich werde seine Lösung nicht kopieren und einfügen, aber die Überprüfung der Existenz einer Kernfunktion Ihres abhängigen Plugins ist eine gute Möglichkeit, um sicherzustellen, dass sie vorhanden ist.
Wenn das Plugin installiert, aber inaktiv ist, erkennt diese Route erneut nur, ob es aktiv ist.
Warum mache ich das so?
Erstens mag ich es nicht, wenn die Tools anderer Leute zusätzliche Inhalte auf meine Website herunterladen. Daher zwinge ich dieses Paradigma nicht anderen Benutzern auf. Stattdessen fordere ich sie auf, den zusätzlichen Code herunterzuladen und in die richtige Richtung zu weisen. Eine sauberere Möglichkeit wäre, sich mit dem automatischen Installationsprogramm zu verbinden, damit das Plugin mit einem einzigen Klick heruntergezogen werden kann.
Außerdem befinden sich mehrere Benutzer meines Codes auf Servern, auf denen sie das Ein-Klick-Installationsprogramm (oder automatisierte Downloads überhaupt) nicht verwenden können. Sie müssen FTP-Plugins verwenden, um sie zu installieren, damit ein stilles Herunterladen und Aktivieren eines Abhängigkeitssystems überhaupt nicht funktioniert.
Wenn Sie mit dem Code einer anderen Person arbeiten, haben Sie keine Kontrolle darüber, wann diese neue Versionen versendet, ob sie Fehler einführen oder ob sie gehackt werden . Installieren Sie also nicht automatisch Code, für den Sie keine Verantwortung übernehmen können.
Meine Methode, um mit einer ähnlichen Situation umzugehen, bestand darin, in der Plugin-Abhängigkeit nach einer Kernklasse oder -funktion zu suchen und zu überprüfen, ob diese vorhanden ist. Zum Beispiel habe ich ein Plugin erstellt, das vom Simple Term Meta-Plugin abhängt. Ich habe es überprüft mit:
In meinem Plugin habe ich das Plugin einfach mit meinem Plugin verpackt. Ich würde es nur ausführen, wenn es nicht bereits installiert wäre.
Sie können den Benutzer auch auffordern, das Plugin herunterzuladen und zu installieren.
In Bezug darauf, wie Sie es automatisch herunterladen würden ... Ich weiß es nicht. Ich würde schauen, um zu sehen, wie der WP-Kern dies verwaltet, und versuchen, etwas Wissen aus dem eingebauten System zu gewinnen.
quelle
Im Anschluss an die Benachrichtigungsidee von EAMann können Sie in einer Administratorbenachrichtigung einen Link hinzufügen, der den Administrator zu einer Suchergebnisseite im Add Plugin führt. Da der angegebene Name der genaue Name ist, wird er zuerst in den Ergebnissen aufgeführt. Dann müssen Sie nur noch auf den Link Jetzt installieren klicken.
Um auf current_user_can () zugreifen zu können , müssen Sie warten, bis die Plugins geladen sind, daher die Aktion plugins_loaded. Die network_admin_url () gibt die richtige URL zurück, unabhängig davon, ob Ihre Site als Multisite eingerichtet ist oder nicht.
quelle
after_setup_theme
anstelle von verwenden sollten,plugins_loaded
da Sie möglicherweise keine Plugins verwenden.