Detaillierte Erklärung und Best Practices des WordPress-Plug-in-Update-Mechanismus
WordPress selbst liefert keinen nativen Plug-in-Update-Prozess, und Entwickler müssen ihn selbst implementieren. Dies beinhaltet die Aktualisierung der Versionsnummer in der Datenbank und das Erstellen neuer Optionen gegebenenfalls.
Die Versionsnummer des WordPress -Plugins sollte an zwei Stellen gespeichert werden: Konstanten in der Hauptdatei und Optionen in der Datenbank. Dies ermöglicht die Erkennung, ob die Datenbankoptionen seit dem letzten Plugin -Update aktualisiert wurden.
Bei der Aktualisierung der Optionen sollten Entwickler darauf achten, die Auswahl des Benutzers nicht zu überschreiben. Wenn in der Datenbank keine Option vorliegt, sollte sie erstellt werden.
array_merge()
Für Optionen, die als Arrays gespeichert sind, können Entwickler die PHP-Funktion
Vor ein paar Wochen habe ich eine E -Mail über die WP -Fotokugel (ein WordPress -Plugin, das ich entwickelt hat) erhalten. Das Problem ist groß: Das Aktualisieren des Plugins lässt einige Installateure zum Absturz bringen. Nach einigen Untersuchungen stellte ich fest, dass das Problem aus den vom Plugin verwendeten Optionen zurückzuführen ist: Diese Installateure liefern keine Standardwerte für die neuen Optionen, die ich hinzugefügt habe.
Deshalb möchte ich dieses Tutorial schreiben. Erstens werden wir genau verstehen, warum wir den Aktualisierungsprozess benötigen und warum WordPress keinen solchen Prozess liefert. Ich werde Ihnen dann zeigen, wie Sie Ihren eigenen Prozess ordnungsgemäß erstellen, um Ihre Optionen zu aktualisieren.
Die Bedeutung des Plug-in-Update-Prozesses
Normalerweise reicht das Ändern der Datei nicht aus, um etwas korrekt zu aktualisieren. Wenn Sie beispielsweise Ihre WordPress -Datei manuell auf eine neue Version aktualisieren, werden Sie von der Plattform aufgefordert, auf eine Schaltfläche zu klicken, um die Datenbank zu aktualisieren.
Angenommen, Sie verwenden Optionen im Plugin. Wenn sich das Plugin entwickelt, benötigen Sie in der neuen Version weitere Optionen. Es ist einfach, neue Optionen zu erstellen, wenn der Benutzer zum ersten Mal das Plugin aktiviert. Sie müssen nur den Aktivierungshaken verwenden.
Schauen wir uns zum Beispiel den folgenden Code an:
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
update_option()
Wenn Sie nicht mit add_option()
statt
Wenn Sie eine neue Option wünschen oder den Wert einer vorhandenen Option in einer neuen Version aktualisieren, müssen Sie die Benutzerdatenbank aktualisieren, die bereits Ihr Plugin verwendet. Daher benötigen wir eine Funktion, die sofort nach dem Update aufgerufen wird .
Die Aktivierung des Hakens kann etwas verwirrend sein. Wenn Sie das Plugin automatisch aktualisieren, wird es schließlich deaktiviert und reaktiviert, sodass wir erwarten können, dass dieser Haken aufgerufen wird. Aber das ist nicht der Fall. <🎜>
genauer gesagt, es war früher, aber WordPress hat dieses Verhalten in Version 3.1 gestoppt. Das Entwicklungsteam hat diese Option erläutert und Sie können die vollständige Erklärung im Make WordPress Core -Blog lesen. Der Hauptgrund ist, dass es nicht jedes Mal aufgerufen wird, denn wenn der Benutzer das Plugin manuell aktualisiert, kann der Aktivierungshaken übersprungen werden.
WordPress bietet daher keine Standardmethode zur automatischen Aufruf von Funktionen nach Plug-in-Updates. Deshalb müssen Sie Ihren eigenen Prozess erstellen.
wie man mit dem Aktualisierungsprozess umgeht
In diesem Teil dieses Tutorials werde ich Ihnen zeigen, wie Sie eine bestimmte Funktion automatisch aufrufen, nachdem das Plugin aktualisiert wurde. Wir werden im nächsten Abschnitt sehen, wie die Aktualisierung vorhandener Optionen und die Erstellung neuer Optionen (in derselben Funktion) ordnungsgemäß behandelt werden.
Das globale Prinzip unserer Methode ist, dass wir die Versionsnummer des Plugins an zwei Stellen speichern: Konstanten in der Plugin -Hauptdatei und Optionen in der Datenbank.
Die Zahlen in der Datenbank speichern die derzeit installierte Version des Benutzers, während die Zahlen in der Konstante die aktuelle Version sind. Wenn diese beiden Zahlen unterschiedlich sind, wurden die Datenbankoptionen seit dem letzten Plugin -Update nicht aktualisiert, sodass wir dies tun müssen.
In diesem Fall werden wir eine Funktion aufrufen, die alle erforderlichen Optionen aktualisiert. Diese Funktion aktualisiert auch die in der Datenbank gespeicherte Versionsnummer: damit wir diese Funktion nicht übertreffen.
Jetzt, wo wir das, was wir tun werden, abgedeckt haben, ist es Zeit, Code zu schreiben! Fügen Sie zunächst eine konstante Definition in die Plugin -Hauptdatei hinzu und nehmen Sie Ihre aktuelle Versionsnummer als Wert. Um Probleme zu vermeiden, testen wir, ob es noch nicht existiert hat.
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Normalerweise verwendet die Plugin -Version eine digitale Identität. Sie können sie jedoch gerne verwenden, wenn Sie ein anderes System verwenden. Die einzige Einschränkung hier ist, eine eindeutige Kennung für jede Version oder zumindest für jede Version bereitzustellen, die die Datenbank ändern muss (neue Optionen, neue Standardeinstellungen usw.).
Wir müssen jetzt eine Funktion schreiben, um zu überprüfen, ob die Datenbank aktualisiert werden muss. Diese Funktion vergleicht die zuvor definierten Konstanten mit den derzeit in der Datenbank gespeicherten Werten. Dazu werden wir sicherstellen, dass unsere Funktion überall mit der plugins_loaded
-Kaktion aufgerufen wird, die ausgelöst wird, sobald alle Plugins geladen sind.
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Diese Funktion ist einfach. Wir rufen die in der Datenbank gespeicherte Versionsnummer genau wie jede andere Option ab und vergleichen sie mit der Konstante. Wenn diese Werte unterschiedlich sind, werden wir die Funktion my_awesome_plugin_activation()
aufrufen.
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Jetzt müssen wir einige Probleme klären. Was ist dann, wenn die Option in der Datenbank noch nicht vorhanden ist? Wenn die Option nicht vorhanden ist, gibt get_option()
false zurück, was sich von Ihrer Versionsnummer unterscheidet, sodass die Funktion aufgerufen wird.
Warum nennen wir die Aktivierungsfunktion? Um klar zu sein, können wir eine neue Funktion erstellen, die speziell für den Aktualisierungsprozess verwendet wird. Wenn Sie dies tun, werden Sie jedoch feststellen, dass diese neue Funktion der Aktivierung sehr ähnlich sein wird, da Aktualisierungsoptionen mit den Optionen übereinstimmen können.
Sie können in der oben genannten Aktivierungsfunktion alles tun, was Sie wollen. Eine Sache ist jedoch erforderlich, und das heißt, die in der Datenbank gespeicherte Versionsnummer zu aktualisieren. Auf diese Weise nennen wir unsere Funktionen nicht jedes Mal, wenn die Seite geladen wird.
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Bitte beachten Sie den Trick: Wir verwenden nicht add_option()
, verwenden Sie nur update_option()
. Wenn die Option noch nicht vorhanden ist, erstellt dies update_option()
. Wenn es existiert, aktualisiert es seinen Wert auf den angegebenen Wert. Aus diesem Grund können wir unsere Aktivierungsfunktion als Aktualisierungsfunktion ohne Probleme verwenden.
Aktualisieren Sie Optionen
Die Aktualisierung einer Option ist genauso wie aktualisiert die Versionsnummer: Sie können update_option()
aufrufen, und sie ist erledigt, auch wenn dies das erste Mal ist, dass WordPress die Option gesehen hat.
Wir möchten jedoch nicht immer die Optionwerte aktualisieren. Wenn Sie Optionen verwenden, müssen Ihre Benutzer in der Regel die Einstellungen personalisieren. Durch die Verwendung von update_option()
überschreiben Sie jedes Mal, wenn Sie das Plugin aktualisieren, die Auswahl des Benutzers, was wir nicht tun möchten.
oben sehen wir, dass get_option()
, wenn die Option nicht vorhanden ist, falsch zurückgibt. Wir werden dieses Verhalten testen, wenn die Option, die wir aktualisieren möchten, in der Datenbank vorhanden sind. Wenn dies der Fall ist, tun wir nichts. Andernfalls erstellen wir diese Option.
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Bitte beachten Sie, dass dieser Test für Optionen erforderlich ist, die wir nicht außer Kraft setzen möchten. In einigen Fällen möchten wir dies vielleicht tun, wenn man die Versionsnummer berücksichtigt, möchten wir den alten Wert auf jeden Fall nicht behalten!
Sie sollten wissen, dass WordPress Arrays ermöglicht, die Werte unserer Optionen zu speichern, und das Erstellen ist nicht schwieriger als das Erstellen anderer Optionen. Zum Beispiel:
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Wenn Sie mehrere Einstellungen benötigen, ist die Verwendung von Arrays eine gute Idee. Auf diese Weise verwenden Sie nicht viele Einträge in der Datenbank und beschränken die Chancen eines anderen Plugins mithilfe von Optionen mit demselben Namen. Dies kann jedoch zu Problemen führen, wenn wir den Aktualisierungsprozess berücksichtigen.
Um die Gründe zu verstehen, nehmen wir an, Sie haben ein Array als Option mit einigen Schlüssel. Ihre Benutzer werden diese Werte sicherlich personalisieren. Mit den oben durchgeführten Tests können wir nur dann die Option erstellen, wenn sie nicht vorhanden ist und diese Entscheidungen nicht überschrieben werden. Das sieht einfach aus, aber was ist, wenn Sie in einem Array einen neuen Schlüssel erstellen möchten?
Wenn die Option in der Datenbank vorhanden ist, wird der vorherige Code nicht erstellt, sodass Ihr neuer Schlüssel nicht vorhanden ist. Wenn wir die Bedingung jedoch löschen, wird das Array bei jedem neuen Update seinen Standardwert abrufen. Nicht ideal. Glücklicherweise gibt es eine Lösung!
Erstens definieren wir ein Array, das die Standardwerte der Optionen enthält (falls ein neuer Schlüssel existiert).
if (MY_AWESOME_PLUGIN_VERSION !== get_option('my_awesome_plugin_version')) my_awesome_plugin_activation();
Dann holen wir das derzeit in der Datenbank gespeicherte Array ab.
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
Jetzt können wir die PHP -Funktion array_merge()
verwenden, um unser Standardarray als erster Parameter und das Array des Benutzers als zweiten Parameter zu nutzen. Auf diese Weise erhalten wir ein Array, das alle im $default
-Array definierten Schlüssel enthält, und wir werden keine Optionen haben, die nicht existieren. Wenn der Benutzer eine der alten Optionen ändert, wird sein Wert beibehalten. Mit array_merge()
führen wir immer die neuesten Definitionen.
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
Schließlich verwenden wir update_option()
, um die Ergebnisse in der Datenbank zu speichern.
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
Wir sind fast vorbei, aber wenn die Funktion zum ersten Mal ausgeführt wird, müssen wir jetzt einen Fehler beheben, auf den Sie möglicherweise begegnen.
Diese Funktion wird aufgerufen, wenn das Plugin aktiviert ist, was wir wollen. In diesem Fall existiert jedoch noch nicht die Option, so dass get_option()
false zurückgibt. Das Problem ist, dass die Verwendung von False als Parameter von array_merge()
einen Fehler verursacht.
Was wir wollen, ist einfach, wenn die Option nicht vorhanden ist, möchten wir, dass $option
ein leeres Array sein. Dazu können wir den zweiten Parameter von get_option()
verwenden, der den zu erhaltenen Standardwert anzeigt (um nicht false zurückzugeben).
if (MY_AWESOME_PLUGIN_VERSION !== get_option('my_awesome_plugin_version')) my_awesome_plugin_activation();
Schlussfolgerung
Sobald Sie es sorgfältig gelesen haben, ist der Prozess der Behandlung der Aktualisierung von WordPress -Plugins nicht kompliziert. Dies ist jedoch wichtig, wenn Sie Optionen verwenden, da es möglicherweise einige Probleme ohne Initialisierungsoptionen gibt.
Derzeit bietet WordPress keine native Möglichkeit, Plug-in-Updates zu verarbeiten. In der Tat sollten wir angesichts der oben aufgeführten Probleme, die wir an einem Tag feststellen, dass diese Art von Funktionalität eingeführt wird, auf ähnliche Weise wie dieses Tutorial implementieren.
Sie können den Code für mein Beispiel -Plugin hier erhalten. Stellen Sie sich diesen Code als Framework zur Implementierung Ihres eigenen WordPress -Plugin -Update -Prozesses vor. Wenn Sie Feedback haben, teilen Sie mir bitte in den Kommentaren unten mit.
WordPress Plugin Update FAQ (FAQ)
reguläre Aktualisierungen von WordPress -Plugins sind aus folgenden Gründen von entscheidender Bedeutung: Erstens enthalten Updates häufig neue Funktionen und Funktionen, die die Leistung der Website verbessern können. Zweitens beheben Updates in der Regel Fehler und Schwachstellen, die die Sicherheit der Website gefährden können. Schließlich gewährleisten Updates die Kompatibilität mit der neuesten Version von WordPress, sodass Ihre Website reibungslos und effizient ausgeführt wird.
Um Sicherheitsaktualisierungen sicherzustellen, stellen Sie Ihre Website sicher, bevor Sie den Aktualisierungsprozess starten. Auf diese Weise können Sie bei Problemen während des Update -Prozesses Ihre Website problemlos in ihren vorherigen Status wiederherstellen. Darüber hinaus wird empfohlen, Updates auf der Staging -Site zu testen, bevor sie auf Ihre Live -Website angewendet werden.
Wenn das Plugin -Update fehlschlägt, besteht der erste Schritt darin, Ihre Website aus der Sicherung wiederherzustellen. Versuchen Sie dann, die Ursache des Versagens zu bestimmen. Dies kann auf einen Konflikt mit einem anderen Plugin oder Thema oder einem Kompatibilitätsproblem mit Ihrer Version von WordPress zurückzuführen sein. Sobald Sie das Problem identifiziert haben, können Sie es selbst beheben oder den Plugin -Entwickler für Hilfe kontaktieren.
WordPress verfügt über integrierte Funktionen, mit denen Sie Plugins automatisch aktualisieren können. Sie können diese Funktion aktivieren, indem Sie den Abschnitt "Plug-in" im WordPress-Dashboard erhalten, das Plug-In auswählen, das Sie automatisch aktualisieren möchten, und auf automatische Aktualisierungen aktivieren.
Ja, wenn das Plugin -Update Probleme mit Ihrer Website verursacht, können Sie das Plugin -Update zurückrollen. Es gibt mehrere verfügbare Plugins, z. B. WP Rollback, mit denen Sie die vorherigen Versionen des Plugins problemlos wiederherstellen können.
Das erweiterte WordPress-Plug-In wird ähnlich wie das kostenlose Plug-In aktualisiert. Sie benötigen jedoch einen gültigen Lizenzschlüssel, um auf das Update zuzugreifen. Nach der Eingabe der Lizenzschlüssel können Sie das Plug-In aus dem WordPress-Dashboard aktualisieren.
Wenn Sie mehrere WordPress -Sites verwalten, müssen Sie möglicherweise viel Zeit damit verbringen, Plugins für jede Website einzeln zu aktualisieren. Ein effizienterer Weg ist die Verwendung von WordPress -Management -Tools wie ManagingWP oder MainWP, mit der Sie Updates für alle Ihre Websites aus einem einzigen Dashboard verwalten können.
Wenn Sie automatische Updates für bestimmte Plugins deaktivieren möchten, können Sie Plugins wie Easy Updates Manager verwenden. Mit diesem Plugin können Sie die automatischen Updates jedes Plugins auf Ihrer Website steuern.
Bevor Sie das Plugin aktualisieren, können Sie die Kompatibilität mit Ihrer WordPress -Version überprüfen, indem Sie die Plugin -Seite im WordPress -Plugin -Verzeichnis besuchen. Hier finden Sie Informationen über die Kompatibilität des Plug-Ins mit verschiedenen Versionen von WordPress.
Wenn das Plugin -Update Ihre Website durchbricht, besteht der erste Schritt darin, Ihre Website aus dem Sicherungsbackern wiederherzustellen. Deaktivieren Sie dann das Plugin, das das Problem verursacht hat. Wenn Sie nicht auf Ihr WordPress-Dashboard zugreifen können, können Sie das Plug-In über FTP deaktivieren, indem Sie den Plug-In-Ordner im Verzeichnis WP-Content/Plugins umbenennen. Nachdem Sie das Plugin deaktiviert haben, können Sie den Plugin -Entwickler beheben oder kontaktieren, um Hilfe zu erhalten.
Das obige ist der detaillierte Inhalt vonWordPress -Plugin aktualisiert den richtigen Weg. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!