Steuern Sie die Aktivierung einer WooCommerce-Erweiterung
Beim Erstellen einer WooCommerce-Erweiterung ist es wichtig zu berücksichtigen, dass der Benutzer WooCommerce möglicherweise nicht installiert oder aktiv hat, wenn die Erweiterung aktiviert ist.
Und obwohl eine Erweiterung möglicherweise aktiviert wird, bewirkt sie nichts. Dies kann letztendlich zu einem Grad an Verwirrung für den Benutzer führen.
In solchen Fällen halte ich es für wichtig sicherzustellen, dass eine Erweiterung nur aktiviert werden kann, wenn das Kern-Plugin installiert und aktiv ist.
Aktivieren einer WooCommerce-Erweiterung
Obwohl einige Erweiterungen für WooCommerce anderen ähnlich sind, kann die Implementierung von einer zur anderen variieren. Das heißt, die Art und Weise, wie eine Erweiterung geschrieben ist, verwendet möglicherweise ein völlig anderes Paradigma als die andere.
Was auch immer der Fall ist, wenn Sie sich für so etwas entscheiden, sollten Sie Folgendes beachten:
- Definieren Sie eine Klasse, die startet, wenn das Plugin startet,
- Überprüfen Sie, ob WooCommerce aktiv ist,
- Wenn ja, laden Sie alle anderen Abhängigkeiten,
- Wenn nicht, dann deaktivieren Sie das Plugin automatisch.
Es klingt nach viel Arbeit, aber es ist nicht so viel Code. Sie können auch erwägen, einen benutzerdefinierten Plugin-Hinweis hinzuzufügen, wenn die Aktivierung verweigert wird, aber ich werde in einem zukünftigen Beitrag behandeln, wie das geht.
1 Definieren Sie eine Klasse
Generell halte ich es für eine gute Idee, eine Funktion zum Starten und Stoppen des Plugins zu haben. Wenn WooCommerce aktiv ist, können Sie die gesamte Erweiterung starten; andernfalls müssen wir seine Aktivierung stoppen.
Dazu können wir uns für jede der Funktionen in den Hook admin_init einklinken .
<?php
class Extension_For_WooCommerce {
public function init() {
add_action( 'admin_init', array( $this, 'start') );
add_action( 'admin_init', array( $this, 'stop') );
}
}
Wenn das Plugin vom WordPress-Admin gestartet wird, muss die Init-Funktion programmgesteuert von der Eingabefunktion des Haupt-Plugins aufgerufen werden.
2 Überprüfen Sie, ob WooCommerce aktiv ist
Vor der Implementierung einer der beiden Funktionen müssen wir jedoch prüfen, ob das WooCommerce-Plugin aktiv ist. Normalerweise kann man davon ausgehen, dass sich WooCommerce in einem festen Verzeichnis befindet, was dieser Code tut :
<?php
private function woocommerce_is_active() {
return is_plugin_active( 'woocommerce/woocommerce.php' );
}
Wenn sich WooCommerce jedoch an einem anderen Ort befindet, müssen Sie möglicherweise einige andere Überprüfungen durchführen, bis Sie es finden.
3 Laden Sie die Abhängigkeiten
In der Startfunktion können wir, wenn WooCommerce aktiv ist, die restlichen Komponenten für das Plugin laden:
<?php
public function start() {
if (! $this->woocommerce_is_active()) {
return;
}
// Load dependencies.
}
Aber WooCommerce darf nicht aktiv sein.
4 Oder Aktivierung stoppen
Und wenn WooCommerce nicht aktiv ist, müssen wir die Aktivierung dieses Plugins stoppen:
<?php
public function stop() {
if (! $this->woocommerce_is_active()) {
deactivate_plugins( plugin_basename( __FILE__) );
unset( $_GET['activate'] ); // Input var okay.
}
}
Beachten Sie, dass dieser Code möglicherweise nicht funktioniert, selbst wenn Sie diesen Code massenweise aktivieren. Hier ist der Grund:
- WordPress arbeitet die Liste der Plugins ab, die es aktivieren muss.
- Wenn WooCommerce vor der Erweiterung nicht aktiviert wurde, kann die Erweiterung nicht aktiviert werden.
Eine andere Herangehensweise wäre also, WooCommerce zu aktivieren, falls es noch nicht aktiv ist.
Benutzerdefinierte Nachrichten
Wie bereits erwähnt, halte ich es für eine gute Idee, eine Art Verwaltungsbenachrichtigung zu geben, wenn die Plugin-Aktivierung verweigert wird, aber das würde den Rahmen dieses Tutorials sprengen.
Wie auch immer, der obige Code bietet eine Möglichkeit, die Aktivierung einer WooCommerce-Erweiterung potenziell zu steuern.