Wie würden Sie abhängige Plugins benötigen und automatisch herunterladen?

Ich frage mich, ob es eine class oder Programmiertechnik gibt, die es mir erlauben würde, nach der Installation und Aktivierung eines bestimmten Plugins zu suchen, und ob das Plugin nicht installiert wurde, um es aus dem Plugin-Repository von WordPress herunterladen zu lassen?

Ich habe ein Plugin, für das ich gerne das Post 2-Plugin von scribu benötige, und ich fragte mich, wie es gemacht werden könnte?

Solutions Collecting From Web of "Wie würden Sie abhängige Plugins benötigen und automatisch herunterladen?"

Ich würde dagegen ermutigen, aber ich verstehe, was Sie zu tun versuchen und etwas ähnliches selbst tun.

Wie ich es mache

Ich erstelle Themes, 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' ); 

Im Plugin / Theme, das das andere Plugin benötigt :

 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 eine helle “Please install my super-cool plugin” Benachrichtigung mit einem Link zur Download-Seite hinzu.

Dies gibt mir eine todsichere Möglichkeit, um zu überprüfen, ob meine Abhängigkeiten existieren und installiert sind. Wenn das Plugin installiert, aber nicht aktiviert ist, wird die Warnung angezeigt.

Ein anderer Weg

Eine weitere Option wurde bereits von @tollmanz empfohlen. Ich werde seine Lösung nicht kopieren und einfügen, aber die Existenz einer corefunktion Ihres abhängigen Plugins zu überprüfen ist eine großartige Möglichkeit, um sicherzustellen, dass es da ist.

Wenn das Plugin installiert, aber inaktiv ist, erkennt diese Route nur, ob es aktiv ist.

Warum ich die Dinge so mache

Zuallererst mag ich nicht die Tools anderer Leute, die extra Sachen auf meine Seite laden. Also zwinge ich dieses Paradigma nicht auf andere Benutzer. Stattdessen fordere ich sie auf, den zusätzlichen Code herunterzuladen und in die richtige Richtung zu lenken. Ein saubererer Weg wäre es, sich an den automatisierten Installer zu binden, um das Plugin mit einem einzigen Klick herunterzuziehen.

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 installieren, damit ein stilles Download-and-activate-a-dependency-System überhaupt nicht funktioniert.

Wenn Sie schließlich mit dem Code einer anderen Person arbeiten, haben Sie keine Kontrolle darüber, wann sie neue Versionen versenden, ob sie Bugs 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 eine ähnliche Situation zu behandeln, bestand darin, nach einer coreklasse oder function in der Pluginabhängigkeit zu suchen und zu prüfen, ob sie existiert. Zum Beispiel habe ich ein Plugin erstellt, das vom Simple Term Meta-Plugin abhängig ist. Ich habe es überprüft mit:

 if(!function_exists('simple_term_meta_install')) { // Do stuff to download plugin } 

In meinem Plugin habe ich das Plugin einfach mit meinem Plugin gepackt. Ich würde es nur ausführen, wenn es nicht bereits installiert war.

Ihre andere Option wäre, den Benutzer dazu aufzufordern, das Plugin herunterzuladen und zu installieren.

In Bezug darauf, wie Sie es automatisch herunterladen würden … Ich weiß es nicht. Ich würde sehen, wie der WP-core das schafft und versuchen, etwas Wissen aus dem eingebauten System zu gewinnen.

Im Anschluss an die EAMann-Benachrichtigungsidee können Sie einen Link in einem Admin-Hinweis hinzufügen, der den Administrator auf eine Suchergebnisseite in Add Plugin bringt. Da der angegebene Name der genaue Name ist, wird er zuerst in den Ergebnissen aufgeführt. Sie müssen dann nur auf den Link Jetzt installieren klicken.

 function posts_2_posts_required() { $url = network_admin_url( 'plugin-install.php?tab=search&type=term&s=Posts+2+Posts&plugin-search-input=Search+Plugins' ); echo ' 

The Posts 2 Posts Plugin is required.

'; } function check_required_plugins() { if ( current_user_can( 'activate_plugins' ) ) { include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if ( ! is_plugin_active( 'posts-2-posts/posts-2-posts.php' ) ) add_action( 'admin_notices', 'posts_2_posts_required' ); } } add_action( 'plugins_loaded', 'check_required_plugins' );

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.