Eu pesquisei isso algumas vezes, mas minha pesquisa não revela muito, exceto o código personalizado, que pode ou não ser uma boa prática do WordPress.
Desde as versões mais recentes (WordPress 3.9 "Smith"), um gancho foi adicionado ao processo de atualização do plugin? Estou perguntando porque é uma necessidade muito básica, mas ainda não o vejo adicionado ao codex (ainda). Caso contrário, quais são as práticas comuns e as melhores práticas que os desenvolvedores empregam?
EDIT: Apenas para esclarecer, não estou falando sobre ativação, mas sobre atualização, dessa forma, se houver alterações no banco de dados ou se puder ser solucionado.
plugin-development
actions
upgrade
user1915665
fonte
fonte
Respostas:
Eu não acho que uma ação foi adicionada. Você pode verificar os detalhes da versão para qualquer versão e ver novas ações adicionadas.
A maneira do WordPress de executar o código na atualização do plugin é o que é descrito aqui :
e com o exemplo de código aqui :
fonte
register_activation_hook
, pois na maioria dos casos, um plug-in é desativado / ativado sempre que você o atualiza pelo administrador. A ligação aoplugins_loaded
fará sua verificação em todo carregamento de página (incluindo o front-end). Houve uma conversa sobre a introduçãoregister_update_hook
, mas foi marcada como WONTFIX há um tempo atrás. A discussão lá é útil.Na discussão em que eles decidiram não adicionar um gancho / função personalizado específico para a atualização , parece que "a maioria das pessoas" (há 4 anos) usa
register_activation_hook
, já que é chamado quando um plug-in é atualizado na página de administração; muitos exemplos que vi desde então seguem essa tendência.Para a maioria dos usos, eu sugeriria não ligar
plugins_loaded
, pois seria chamado a cada carregamento de página. A exceção é mencionada na discussão: os caminhos de atualização via FTP / SVN são 'casos de ponta', já que o WP não teria um mecanismo para saber que o plug-in foi alterado. Nesse caso, a resposta anterior pode ser mais relevante.Consulte https://gist.github.com/zaus/c08288c68b7f487193d1 para obter um exemplo de 'estrutura simples' usando
register_activation_hook
.fonte
register_activation_hook
não é garantido que seja executado em atualizações, consulte make.wordpress.org/core/2010/10/27/…plugins_loaded
- executa cada carga e pode ser oneroso / lento.Desde o WordPress 3.9, você pode usar o
upgrader_process_complete
hook.Ver referência 1 , 2
Aqui está um código de exemplo:
Uma vez atualizado, o plugin definirá a tarefa no db usando a
set_transient()
função Não é recomendável adicionar código de atualização ao chamar oupgrader_process_complete
gancho.Em seguida, se você navegar para outra página de administração, o
plugins_loaded
gancho funcionará e o código de atualização estará funcionando lá.Observe que este plug-in deve estar ativado para que o gancho de atualização funcione.
Isso não está funcionando no ativar o plug-in, portanto, se você deseja que o código funcione para ativar o plug-in, é necessário codificá-lo na
register_activation_hook()
função.fonte