Como evito que um plug-in seja carregado ao executar o WP-CLI?
12
Atualmente, uso esse código no próprio arquivo principal de plug-ins. Mas esse plug-in não é o meu, então eu preferiria poder atualizá-lo normalmente sem sempre adicionar esse código.
if(defined('WP_CLI')&& WP_CLI ){exit;}
Preciso fazer isso porque esse plug-in produz erros e interrompe a execução correta do wp-cli, portanto, não posso simplesmente desativar o plug-in com o wp-cli, executar minhas tarefas e reativá-lo.
Existe uma maneira de fazer algo como if x then do not load plugin file xdentro de um mu-plugin?
Basta substituir gravityforms/gravityforms.phppelo diretório e nome do arquivo do plug-in que você deseja desativar.
O problema aqui é que estamos tentando afetar o carregamento de plug-ins, então não podemos fazer isso de dentro de um plug-in, porque é tarde demais. No tema também seria tarde demais.
Felizmente, o WordPress tem "Plug-ins de uso obrigatório". Esses plug-ins podem ser adicionados antes e separadamente dos plug-ins comuns e não aparecem na lista de plug-ins comuns.
Tudo o que você precisa para adicionar esse código a um Plug-in Must Use é criar um wp-content/mu-pluginsdiretório (se ele ainda não existir) e criar um arquivo PHP (pode ser chamado de qualquer coisa) com esse código. Você não precisa de um cabeçalho de plug-in ou qualquer outra coisa.
Agora esse código será carregado antes de todos os outros plugins quando o WordPress carregar. Como nosso filtro está em vigor, quando o WordPress obtiver a lista de plug-ins ativos para carregar o plug-in que você deseja desativar, será filtrado dessa lista se o WP-CLI estiver ativo.
Teve a mesma idéia, mas isso não funciona. Pelo menos não no meu ambiente local. Talvez get_option()esteja retornando mais cedo quando o valor for salvo em transientes / similar e esse filtro for ignorado? (Não funciona para a maioria dos casos, apenas na tela de administração do plugin que realmente foi executado)
kero
Hum. Olhando a fonte e até onde eu sei, a única razão pela qual o option_filtro não seria aplicado é se ele não tiver um valor e retornar o padrão.
Jacob Peattie
Esse foi realmente o caso (nenhum plug-in ativo). Eu não deveria manter meus ambientes de teste muito limpo ..
kero
1
Eu aceitei isso porque no meu caso é o que eu precisava. Mesmo que, em geral, a --skip-plugin=xopção wp-cli possa ser a melhor maneira de fazer isso.
NextGenThemes
15
Você pode usar a skip-pluginsopção no WP-CLI para não carregar plug-ins individuais ao usar o WP-CLI.
Você pode usá-lo no comando como este:
wp user list --skip-plugins=my-plugin
Ou você pode adicionar isso ao seu wp-cli.ymlarquivo:
get_option()
esteja retornando mais cedo quando o valor for salvo em transientes / similar e esse filtro for ignorado? (Não funciona para a maioria dos casos, apenas na tela de administração do plugin que realmente foi executado)option_
filtro não seria aplicado é se ele não tiver um valor e retornar o padrão.--skip-plugin=x
opção wp-cli possa ser a melhor maneira de fazer isso.Você pode usar a
skip-plugins
opção no WP-CLI para não carregar plug-ins individuais ao usar o WP-CLI.Você pode usá-lo no comando como este:
Ou você pode adicionar isso ao seu
wp-cli.yml
arquivo:fonte
Apenas renomear o nome do diretório do plugin o desativará. Às vezes faço isso para desativar temporariamente um plugin [linux]:
fonte