Badałem to kilka razy, ale moje wyszukiwanie nie ujawnia wiele poza niestandardowym kodem, który może, ale nie musi, być dobrą praktyką WordPress.
Czy w najnowszych wydaniach (WordPress 3.9 „Smith”) dodano hak do procesu aktualizacji wtyczki? Pytam, ponieważ jest to bardzo podstawowa potrzeba, ale nie widzę, aby była dodana do kodeksu (jeszcze). Jeśli nie, jakie są najczęstsze i najlepsze praktyki deweloperów?
EDYCJA: Aby wyjaśnić, nie mówię o aktywacji, ale o aktualizacji w ten sposób, jeśli są zmiany w bazie danych lub w inny sposób można je rozwiązać.
plugin-development
actions
upgrade
użytkownik1915665
źródło
źródło
Odpowiedzi:
Nie sądzę, że dodano akcję. Możesz sprawdzić szczegóły każdej wersji i zobaczyć wszelkie dodane nowe działania.
Sposób WordPressa do uruchamiania kodu przy aktualizacji wtyczek został opisany tutaj :
i przykładowy kod tutaj :
źródło
register_activation_hook
, ponieważ w większości przypadków wtyczka jest dezaktywowana / aktywowana za każdym razem, gdy aktualizujesz ją od administratora. Podłączenie doplugins_loaded
spowoduje sprawdzenie przy każdym ładowaniu strony (w tym nakładki). Mówiono o wprowadzeniuregister_update_hook
, ale jakiś czas temu oznaczono go jako WONTFIX . Dyskusja tam jest pomocna.Z dyskusji, w której postanowili nie dodawać niestandardowego zaczepu / funkcji specyficznej dla aktualizacji , brzmi to jak użycie „większości ludzi” (sprzed 4 lat)
register_activation_hook
, ponieważ jest wywoływane, gdy wtyczka jest aktualizowana przez stronę administratora; większość przykładów, które widziałem od tego czasu, podąża za tym trendem.W przypadku większości zastosowań sugerowałbym, aby nie przechwytywać
plugins_loaded
, ponieważ byłby wywoływany przy każdym ładowaniu strony. Wyjątek od tego jest wspomniany w dyskusji: ścieżki uaktualnienia przez FTP / SVN to „przypadki brzegowe”, ponieważ WP nie miałoby mechanizmu, aby wiedzieć, że wtyczka została zmieniona, w którym to przypadku poprzednia odpowiedź może być bardziej trafna.Zobacz https://gist.github.com/zaus/c08288c68b7f487193d1, aby zobaczyć przykład „prostej struktury”
register_activation_hook
.źródło
register_activation_hook
nie gwarantuje się, że będzie uruchamiany przy aktualizacjach, patrz make.wordpress.org/core/2010/10/27/…plugins_loaded
- uruchamia się przy każdym obciążeniu i może być uciążliwe / wolne.Od WordPress 3.9 możesz używać
upgrader_process_complete
haka.Patrz odniesienie 1 , 2
Oto przykładowy kod:
Po aktualizacji wtyczki ustawisz zadanie w db za pomocą
set_transient()
funkcji. Nie zaleca się dodawania kodu aktualizacji podczas wywoływaniaupgrader_process_complete
hooka.Następnie, jeśli
plugins_loaded
przejdziesz do innej strony administratora, hak będzie działał i będzie tam działał kod aktualizacji.Pamiętaj, że ta wtyczka musi zostać aktywowana, aby hak aktualizacji działał.
To nie działa na aktywację wtyczki, więc jeśli chcesz kodu, który działa na aktywacji wtyczki, musisz ją zakodować w
register_activation_hook()
funkcji.źródło