Ich habe dies einige Male recherchiert, aber meine Suche zeigt nur benutzerdefinierten Code, der eine gute WordPress-Praxis sein kann oder nicht.
Wurde seit den neuesten Versionen (WordPress 3.9 "Smith") ein Hook zum Plugin-Update-Prozess hinzugefügt? Ich frage, weil es ein sehr grundlegendes Bedürfnis ist, aber ich sehe es (noch) nicht im Kodex. Wenn nicht, welche allgemeinen und bewährten Verfahren setzen Entwickler ein?
EDIT: Nur um zu verdeutlichen, ich spreche nicht von Aktivierung, sondern von Aktualisierung auf diese Weise, wenn es Änderungen in der Datenbank gibt oder auf andere Weise behoben werden kann.
plugin-development
actions
upgrade
user1915665
quelle
quelle
Antworten:
Ich glaube nicht, dass eine Aktion hinzugefügt wurde. Du kannst die Versionsdetails für jede Version anzeigen und sehen, ob neue Aktionen hinzugefügt wurden.
Die WordPress-Methode zum Ausführen von Code beim Plugin-Update wird beschrieben hier :
und mit Codebeispiel hier :
quelle
register_activation_hook
, da in den meisten Fällen ein Plugin deaktiviert / aktiviert wird, wenn Sie es vom Administrator aktualisieren. Wenn Sie sich einbinden,plugins_loaded
überprüfen Sie jede Seite (einschließlich Frontend). Es wurde über die Einführung gesprochenregister_update_hook
, aber es wurde vor einiger Zeit als WONTFIX markiert . Die Diskussion dort ist hilfreich.Von dem Diskussion, in der sie beschlossen haben, keinen benutzerdefinierten Hook / keine benutzerdefinierte Funktion für das Upgrade hinzuzufügen , klingt es so, als würden "die meisten Leute" (
register_activation_hook
seit 4 Jahren) es verwenden , da es aufgerufen wird, wenn ein Plugin über die Administrationsseite aktualisiert wird. Die meisten Beispiele, die ich seitdem gesehen habe, folgen diesem Trend.Für die meisten Anwendungen würde ich empfehlen, nicht durchzuhaken
plugins_loaded
, da dies bei jedem Laden der Seite aufgerufen wird. Die Ausnahme hiervon wird in der Diskussion erwähnt: Upgrade-Pfade über FTP / SVN sind "Randfälle", da WP keinen Mechanismus hätte, um zu wissen, dass das Plugin geändert wurde. In diesem Fall die vorherige Antwort relevanter sein.Unter https://gist.github.com/zaus/c08288c68b7f487193d1 finden Sie ein Beispiel für ein einfaches Framework
register_activation_hook
.quelle
register_activation_hook
Es wird nicht garantiert, dass Updates ausgeführt werden, siehe make.wordpress.org/core/2010/10/27/…plugins_loaded
- läuft jede Last und kann lästig / langsam sein.Seit WordPress 3.9 können Sie
upgrader_process_complete
Hook verwenden.Siehe Referenz 1 , 2
Hier ist ein Beispielcode:
Sobald das Plugin aktualisiert wurde, wird die Aufgabe mithilfe der
set_transient()
Funktion in db gesetzt . Es wird nicht empfohlen, beim Aufrufen vonupgrader_process_complete
hook Update-Code hinzuzufügen .Wenn Sie als Nächstes zu einer anderen Administrationsseite navigieren,
plugins_loaded
funktioniert der Hook und der Update-Code funktioniert dort.Bitte beachten Sie, dass dieses Plugin aktiviert sein muss, damit der Update-Hook funktioniert.
Dies funktioniert nicht beim Aktivieren des Plugins. Wenn Sie also den Code zum Aktivieren des Plugins verwenden möchten, müssen Sie ihn in der
register_activation_hook()
Funktion codieren .quelle