Instalando, atualizando e gerenciando plugins do WordPress com WP-CLI

Publicados: 2022-07-26

O WP-CLI permite que você faça praticamente qualquer coisa no administrador do WordPress, mas na linha de comando. Isso economiza muito tempo e fornece um fluxo de trabalho mais limpo. Você pode usar o WP-CLI para gerenciar o núcleo do WordPress, executar atualizações de temas, gerenciar instalações em vários sites e muito mais. Neste artigo vamos nos concentrar em um dos casos de uso mais comuns, o gerenciamento de seus plugins do WordPress.

Os comandos WP-CLI são todos estruturados da mesma maneira. Há sempre um comando pai (como wp plugin ) e um subcomando (como install ), seguido por parâmetros e opções. Vamos nos concentrar no wp plugin e seus subcomandos neste artigo, mas você pode ver uma explicação mais detalhada em nosso guia para a estrutura de comandos WP-CLI.

Esse artigo usou o comando wp plugin como exemplo, destacando como instalar e ativar plugins usando WP-CLI. Neste artigo, vamos nos aprofundar muito em como gerenciar nossos plugins usando a interface de linha de comando do WordPress.

Instalando e Ativando Plugins

Existem atualmente 16 subcomandos oficiais para o comando wp plugin parent. Nesta seção, abordaremos os subcomandos para instalação e ativação. Também veremos como instalar e ativar plugins com um único comando. Também veremos como instalar plug-ins de outras fontes além do Diretório de plug-ins do WordPress.

Digite wp plugin install seguido pelo slug oficial do plugin para instalar a versão mais recente:

wp plugin instalar hello-dolly
Instalando o Hello Dolly (1.7.2)
Baixando o pacote de instalação de https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip...
Usando o arquivo em cache '/Users/eriktorsner/.wp-cli/cache/plugin/hello-dolly-1.7.2.zip'...
A autenticidade de hello-dolly.1.7.2.zip não pôde ser verificada porque nenhuma assinatura foi encontrada.
Desempacotando o pacote...
Instalando o plug-in...
Plugin instalado com sucesso.
Sucesso: instalou 1 de 1 plugins.

Em seguida, ativamos o plugin usando o comando wp plugin activate :

wp plugin ativar hello-dolly
Plugin 'hello-dolly' ativado.
Sucesso: Ativado 1 de 1 plugins.

Procurando por um Plugin Slug

Observe que o slug geralmente é diferente do nome do plug-in. O slug é visível na URL do plug-in no Diretório de plug-ins do WordPress, mas você pode acelerar seu fluxo de trabalho mantendo a linha de comando e usando o subcomando search , seguido por dois parâmetros e seus valores: --per-page=1 e --fields=name,slug .

O parâmetro opcional --per-page informa ao WP-CLI quantos resultados nos mostrar, neste caso apenas um. O padrão exibirá 10 resultados se você não fornecer esse parâmetro. Eu dei um valor de 1 aqui, pois só quero ver o resultado mais relevante.

O parâmetro --fields diz ao WP-CLI para solicitar campos específicos da API, neste caso o nome e o slug do plugin. Há uma grande variedade de valores que você pode usar aqui, incluindo version para ver o número da versão atual e rating para ver as classificações do plug-in como uma porcentagem e o número total de classificações. Em vez disso, você pode usar --field=<field> se quiser exibir apenas o resultado de um único campo. Você deve usar o parâmetro --fields ou --field com o comando wp plugin search .

pesquisa de plugin wp "wp offload media" --per-page=1 --fields=name,slug
Sucesso: Mostrando 1 de 66 plugins.
+------------------------------------------------- -------------------------------+------------------ --------+
| nome | lesma |
+------------------------------------------------- -------------------------------+------------------ --------+
| WP Offload Media Lite para Amazon S3, DigitalOcean Spaces e Google Cloud Sto | amazon-s3-and-cloudfront |
| raiva | |
+------------------------------------------------- -------------------------------+------------------ --------+

Como a resposta para este comando é uma lista, esta é uma boa oportunidade para mostrar o que o parâmetro --format pode fazer. Vamos pedir ao WP-CLI para nos fornecer essa lista no formato JSON e, em seguida, canalizá-la por meio do utilitário jq para uma formatação mais bonita. O utilitário jq é um processador JSON de linha de comando leve que você pode instalar no link acima ou experimentar online. Certifique-se de omitir | jq | jq do comando abaixo se você não o tiver instalado.

Quando pedimos uma saída formatada em JSON, o WP-CLI omite a mensagem de status para que não tenhamos um JSON quebrado:


$ wp plugin pesquisa "wp offload media" --per-page=1 --fields=name,slug --format=json | jq
[
  {
    "name": "WP Offload Media Lite para Amazon S3, DigitalOcean Spaces e Google Cloud Storage",
    "slug": "amazon-s3-and-cloudfront"
  }
]

Para ativar o plugin uma vez instalado, use wp plugin activate seguido pelo slug oficial do plugin.

Instalando e ativando um plugin ao mesmo tempo

Quando se trata de gerenciar seus plugins com WP-CLI, uma das grandes vantagens é que você pode instalar e ativar um plugin com um único comando. Enquanto activate pode ser usado como um subcomando com wp plugin , ele também pode ser usado como um parâmetro com o comando wp plugin install :

# Instalando e ativando o plugin ao mesmo tempo
wp plugin install --activate hello-dolly

Instalando uma versão específica do plug-in

Não é incomum que você queira instalar uma versão específica de um plugin para fins de teste. Desde que a versão desejada ainda esteja disponível no diretório de plugins do WordPress, você pode selecionar qualquer versão que achar melhor:

# Instalando uma versão específica do plugin
wp plugin instalar woocommerce --version=5.5.3

Instalando plugins de outros locais

O diretório de plugins do WordPress não é o único lugar onde podemos obter plugins. Também podemos instalar um plugin diretamente do sistema de arquivos. Na maioria das vezes, quando você compra um plugin premium, recebe a entrega inicial na forma de um arquivo zip. O WP-CLI instalará com prazer esse arquivo zip diretamente, sem a necessidade de extrair o pacote primeiro:

# Instalando um plugin da pasta Downloads
$ wp plugin instalar ~/Downloads/advanced-custom-fields-pro.zip

Isso também funciona se o plug-in que você deseja instalar estiver disponível em uma URL, talvez acessível apenas fornecendo credenciais por meio de parâmetros de solicitação ou em um servidor com um certificado autoassinado:

# Obtenha o plugin de uma URL
wp plugin instalar http://www.hellfish.media/my-plugin.zip

# ...ou até mesmo um arquivo privado de um bucket da Amazon:
wp plugin instalar https://s3.amazonaws.com/bucketname/my-plugin.zip?X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=abc123

# Do nosso servidor interno com um certificado autoassinado:
instalação do plugin wp https://intranet.hellfish.media/my-plugin.zip --insecure

Atualizando plugins com WP-CLI

Uma vez que você tenha um plugin instalado, é importante mantê-lo atualizado por motivos de segurança. Para descobrir se há algum plugin para atualizar, podemos executar o comando wp plugin list :

lista de plugins wp
+-------------------------------+----------+------ -----+-------------+
| nome | estado | atualização | versão |
+-------------------------------+----------+------ -----+-------------+
| amazon-s3-and-cloudfront | ativo | disponível | 2.6.1 |
| olá-boneca | ativo | disponível | 1.7.1 |
| wunderdevmu | uso obrigatório | nenhum | 1,0 |
+-------------------------------+----------+------ -----+-------------+

Nesse caso, os plugins Hello Dolly e WP Offload Media precisam de atualizações. Naturalmente existe um subcomando separado para isso chamado update .

Podemos atualizá-los um por um ou ser um pouco preguiçosos e apenas atualizar tudo o que precisa ser atualizado de uma só vez usando a opção --all . O comportamento padrão do comando update é atualizar até a versão mais recente disponível, que inclui atualizações de versão principal. Mas usando a opção --minor podemos ser um pouco mais cuidadosos e atualizar apenas para versões menores. Por exemplo, podemos dizer para atualizar de 1.2.3 para 1.3.0, mas não para 2.0.0. Podemos até ser super cuidadosos e usar a opção --patch para limitar as atualizações a apenas patches, ou seja, de 1.2.3 a 1.2.5, mas nunca a 1.3.0.

# Atualize cuidadosamente os plugins um por um
atualização do plugin wp wp-offload-media
atualização do plugin wp hello-dolly

# A abordagem do caubói
atualização do plugin wp --all

# Um pouco mais sensato
atualização do plugin wp --all --minor

# Muito defensivo
atualização do plugin wp --all --patch

Nota: As --minor e --patch assumem que o plugin está usando versionamento semântico. Longe de todos os plugins fazerem isso, você precisará procurar os plugins que está usando para não ter surpresas desagradáveis. A opção --dry-run permite que você verifique e certifique-se de que seus comandos estão corretos:

# Testar a atualização de um único plugin para apenas patches
atualização do plugin wp hello-dolly --patch --dry-run

O parâmetro --exclude=<plugin name> é usado para indicar quais plugins devem ser excluídos da atualização. Inclua os nomes dos plug-ins como uma lista separada por vírgulas e o WP-CLI atualizará todos os outros plug-ins, deixando-os em paz:

atualização do plugin wp --all --exclude=hello-dolly
Ativando o modo de manutenção...
Baixando atualização de https://deliciousbrains.com/my-account/download/7512/?version=2.6.2...
Descompactando a atualização...
Instalando a versão mais recente...
Removendo a versão antiga do plugin...
Plugin atualizado com sucesso.
Desativando o modo de manutenção...
+---------------------------+-------------+-------- -----+-------------+
| nome | versão_antiga | nova_versão | estado |
+---------------------------+-------------+-------- -----+-------------+
| amazon-s3-and-cloudfront | 2.6.1 | 2.6.2 | Atualizado |
+---------------------------+-------------+-------- -----+-------------+

Forçando a reinstalação do plugin

A maioria dos plugins premium vem com seu próprio verificador de atualização integrado que também funciona muito bem com o WP-CLI. Na minha experiência, qualquer plug-in que possa ser atualizado com um clique nas páginas de administração do WordPress também pode ser atualizado usando o WP-CLI. Mas, em alguns casos, as atualizações são fornecidas por meio de uma nova versão do arquivo zip que você precisa colocar no local correto em seu servidor. Você pode aplicar esse tipo de atualização forçando a reinstalação do plug-in usando a opção --force :

# Força a reinstalação de um plugin
wp plugin install ~/Downloads/my-custom-plugin-v2.zip --force

Ativando atualizações automáticas

Desde a versão 5.5, o WordPress pode atualizar plugins automaticamente. As atualizações automáticas precisam ser habilitadas para cada plugin individual. O WP-CLI não oferece nenhum tratamento em massa para atualizações automáticas. Isso deve ser feito individualmente por plugin usando o subcomando auto-updates . Você pode ver como funciona com os seguintes comandos:

# Verifique se as atualizações automáticas estão habilitadas para um plugin
wp plugin atualizações automáticas de status hello-dolly

# Ativar atualizações automáticas 
as atualizações automáticas do plugin wp habilitam o hello-dolly

# Desabilite novamente
as atualizações automáticas do plugin wp desativam o hello-dolly

Desativando e removendo plugins

Instalar, ativar e atualizar plugins estão entre as tarefas mais comuns, mas existem outros trabalhos de gerenciamento de plugins que o WP-CLI pode fazer para nós.

Se você já tentou descobrir o que está causando um problema em seu site WordPress, provavelmente foi aconselhado a desativar todos os plugins como um dos primeiros passos. É possível fazer isso com manipulação em massa em um navegador da web, mas sempre me deixa nervoso. Eu prefiro fazê-lo através da linha de comando usando a opção --all .

# Desativa todos os plugins de uma vez
wp plugin desativar --all

# E reative-os novamente
wp plugin ativar --all

A remoção completa de um plug-in também é feita facilmente com o WP-CLI. Uma diferença entre fazer isso através da linha de comando e do navegador é que o WP-CLI permitirá que você remova um plug-in sem executar os ganchos de desativação primeiro. Se você já teve um plugin instalado que trava o WordPress durante a desativação, sabe por que isso pode ser tão útil:

# Desativar e desinstalar 
wp plugin desativar hello-dolly --uninstall

# Remova um plugin sem dar a chance de desativá-lo
wp plugin excluir hello-dolly

Há também o subcomando de toggle que está relacionado à ativação e desativação de plugins. Ele irá inverter ou alternar o status de ativação para que ele mude para o oposto do status atual. Você pode adicionar --network para ativar ou desativar o plug-in para uma rede multisite inteira.

Checksums de plug-ins

O WP-CLI tem a capacidade de comparar as somas de verificação de seus plug-ins instalados com as somas de verificação para o mesmo plug-in e versão no Diretório de plug-ins do WordPress. Essa é uma maneira muito eficiente de determinar se os arquivos de plug-in em sua instalação do WordPress foram manipulados. Se eles tiverem, é uma forte indicação de que você foi hackeado.

Checksums são algoritmos especiais de computador que podem receber uma entrada de qualquer tipo e tamanho e convertê-la em uma string curta. Essa string geralmente tem cerca de 20 a 40 caracteres, o que a torna adequada para armazenamento em um banco de dados. Essa string resultante é chamada de hash, assinatura ou, por motivos históricos, soma de verificação.

O que torna esses algoritmos únicos é que, mesmo que um único caractere seja alterado na entrada, a saída será completamente diferente. Alimente todos os arquivos de um plug-in no algoritmo de checksum, um por um, e você terminará com uma pequena assinatura, ou checksum, que representa todo o plug-in.

Sempre que uma nova versão de um plug-in é publicada no Diretório de plug-ins do WordPress, a soma de verificação é calculada e salva para essa versão específica. Alguns meses depois, quando você quiser verificar se não foi hackeado, peça ao WP-CLI para calcular a soma de verificação de seus plugins e compará-la com as somas de verificação originais que o WordPress mantém. Se houver arquivos adicionados, modificados ou ausentes do seu lado, a soma de verificação do plug-in será diferente da original e o WP-CLI fará algum barulho sobre isso.

O subcomando que lida com essa mágica de verificação de hash é chamado check verify-checksums e é essencialmente o mesmo que perguntar “meus plugins estão inalterados desde que os obtive no diretório de plugins do WordPress?”

# Verifique se há um único plugin
wp plugin check-checksums hello-dolly
Sucesso: 1 de 1 plugins verificados

# Verifique todos os plugins que vêm do repositório
wp plugin check-checksums --all

Isso funciona apenas para plug-ins que foram instalados a partir do diretório oficial de plug-ins do WordPress, portanto, seus plug-ins premium não serão verificados por este comando. O subcomando verify-checksums também existe para wp core mas não pode ser usado para verificar temas do WordPress.

Comandos para script

Até agora, os comandos que abordamos são úteis para quem precisa gerenciar plugins do WordPress. O último conjunto de subcomandos do wp plugin que vou abordar são principalmente de interesse dos desenvolvedores do WordPress, pois são destinados principalmente ao uso em scripts Bash.

Primeiro precisamos falar um pouco sobre os códigos de saída do Unix. Em um sistema Unix, todos os programas que saem em execução retornam com um código de saída. A interpretação padrão é que o código de saída 0 significa que o programa terminou bem, enquanto um código de saída diferente de zero indica que ocorreu um erro.

Os códigos de erro são frequentemente usados ​​em scripts de shell para usar em instruções if/else e outras formas de ramificação. Não vemos o código de saída ao executar um comando normalmente no prompt de comando, mas sempre podemos encontrá-lo usando $? :

# Execute algo que funcione e obtenha o código de saída
encontro
eco $?
0

# Executa algo que falha
ls /pasta inexistente
ls: /idongfdg: Nenhum arquivo ou diretório
eco $?
1

No WP-CLI, temos vários comandos destinados principalmente a verificar algo e retornar um código de saída útil. O comando wp plugin possui dois destes subcomandos, is-installed e is-active , que nos permitem verificar se um determinado plugin está instalado e ativado:

# Verifique se o hello-dolly está instalado (está)
wp plugin está instalado hello-dolly
eco $?
0

# Remova o hello-dolly e verifique novamente
wp plugin excluir hello-dolly
wp plugin está instalado hello-dolly
eco $?
1

# Verifique se o woocommerce está ativado
wp plugin está ativo woocommerce
eco $?
0

# Desativar woocommerce
wp plugin desativar woocommerce
wp plugin está ativo woocommerce
eco $?
1

Usando os comandos acima, é possível escrever scripts Bash que fazem coisas diferentes dependendo se um determinado plugin está instalado/ativado ou não.

O último subcomando que suspeito ser principalmente para fins de script é path . Este comando simplesmente retorna o caminho para o arquivo PHP principal de um plugin e, consequentemente, também para a pasta do plugin. Podemos combinar isso com outros truques do Bash, por exemplo, assim:

# Mostra todos os arquivos na pasta do plugin woocommerce
ls -al $(dirname $(wp plugin path woocommerce))

Isso não é super útil no trabalho diário de linha de comando, mas certamente é útil ao escrever scripts e você precisa obter o caminho para um plug-in.

Conclusão

Como você pode ver, gerenciar plugins do WordPress através da linha de comando aumenta sua velocidade e torna muitas tarefas comuns muito mais simples. Cobri as tarefas mais comuns quando se trata de gerenciar seus plugins, mas encorajo você a explorar mais por conta própria. Você logo descobrirá que o poder do WP-CLI se estende muito além dos plugins, permitindo que você faça praticamente tudo o que poderia fazer no administrador do WordPress, mas muito mais rápido.

Você tem algum ótimo exemplo de como está usando o comando wp plugin ? Por favor, deixe-me saber nos comentários.