Sites e aplicações

WP-CLI: administrar o WordPress a partir do terminal

Revisto a 10 min de leitura wordpress wp cli

O WP-CLI permite consultar e administrar o WordPress a partir do terminal. Utilize-o com o utilizador da conta e na instalação correta: muitos comandos podem alterar dados sem mostrar um formulário de confirmação.

Instalar o WP-CLI

Aceda por SSH e verifique primeiro se está disponível:

command -v wp
wp --info

Se faltar, siga a instalação oficial com um PHP compatível. Para instalar através do Composer na sua conta, utilize o pacote completo:

composer global require wp-cli/wp-cli-bundle
composer global config bin-dir --absolute

O segundo comando mostra a pasta dos executáveis. Se o wp não for encontrado, adicione-a ao PATH e volte a verificar wp --info. O PHP do terminal pode ser diferente do PHP web; não ignore os requisitos do Composer para forçar a instalação.

Antes de executar comandos que alteram dados

Coloque-se na raiz correta e verifique a identidade:

pwd
wp core version
wp option get home
wp option get siteurl

Prepare uma cópia dos ficheiros e da base de dados. Este exemplo exporta SQL para um diretório privado fora da raiz pública; substitua o caminho antes de o executar e não reutilize o nome de uma cópia existente:

umask 077
wp db export /RUTA_PRIVADA_FUERA_DEL_WEBROOT/wp-antes-del-cambio.sql
sha256sum /RUTA_PRIVADA_FUERA_DEL_WEBROOT/wp-antes-del-cambio.sql

Guarde o ficheiro e o checksum fora do alojamento e teste a recuperação. O checksum serve para detetar alterações ao ficheiro; não comprova que a cópia esteja completa ou seja restaurável.

Ensaie as alterações num clone, utilize --dry-run quando estiver disponível e reveja o alcance antes de o retirar. Se houver escritas contínuas, planeie como evitar perdê-las numa reversão.

Instalar o WordPress

Num destino vazio e protegido, descarregue o núcleo:

wp core download

Crie antes uma base de dados e um utilizador SQL próprios. Substitua os valores do exemplo e peça a palavra-passe através do prompt:

wp config create --dbname=base_datos \
  --dbuser=usuario \
  --dbhost=localhost \
  --dbprefix=wp_ \
  --prompt=dbpass

Configure o site com uma conta de administrador própria:

wp core install --url=https://dominio.example \
  --title=Sitio \
  --admin_user=administrador_ejemplo \
  --admin_email=administrador@dominio.example \
  --prompt=admin_password

Os domínios e os utilizadores são exemplos. Não coloque palavras-passe em argumentos nem as publique em registos. Verifique o HTTPS e o acesso antes de retirar a proteção do destino.

Reinstalar o WordPress

A reinstalação deve manter a versão e o idioma se apenas pretende reparar ficheiros. Substitua os marcadores verificados:

wp core download --version=VERSION_INSTALADA --locale=LOCALE_INSTALADO --skip-content --force
wp core verify-checksums --include-root

--force substitui os ficheiros do pacote, mas não elimina todos os ficheiros estranhos. Sem uma versão explícita, pode descarregar uma diferente. Isto não limpa, por si só, uma intrusão em plugins, utilizadores ou base de dados.

Alterar o URL principal do WordPress

Para uma instalação simples em que o WordPress e o site público partilham a raiz, estes comandos alteram os valores da base de dados:

wp option update home 'https://nuevodominio.example'
wp option update siteurl 'https://nuevodominio.example'

Se o núcleo estiver noutro subdiretório, os dois valores podem ser diferentes. Verifique também as constantes no wp-config.php, o Multisite, o DNS e os certificados. Alterar as opções não substitui todas as referências dentro do conteúdo.

Lista de plugins

wp plugin list

Verifique o slug, o estado e a versão. Se um plugin impedir o arranque do WordPress, algumas consultas suportam --skip-plugins; os mu-plugins podem continuar a ser carregados. Não é uma reparação do componente.

Instalação de plugins

Procure o slug oficial e verifique a compatibilidade antes de instalar:

wp plugin search 'termino de busqueda'
wp plugin install SLUG_DEL_PLUGIN

Instalar e ativar são ações diferentes. Adicione --activate apenas quando quiser ativar esse componente e tiver verificado as suas dependências. Para um ZIP comercial, utilize o pacote verificável do fornecedor; não exponha chaves de descarga no histórico.

Desativar um ou vários plugins

wp plugin deactivate SLUG_DEL_PLUGIN

Substitua o marcador pelo slug real. --all afeta todos os plugins do alcance: pode interromper pagamentos, segurança ou formulários. Em Multisite, verifique também a ativação na rede. Não desative em massa uma loja aberta para testar uma hipótese.

Atualizar plugins

wp plugin update SLUG_DEL_PLUGIN --dry-run

Reveja as atualizações propostas, prepare a cópia e ensaie a alteração. Para a aplicar, repita sem --dry-run apenas dentro do procedimento verificado. Verifique depois a função do plugin; uma saída correta não comprova o processo de negócio.

Pesquisa e substituição em massa de ocorrências na base de dados

O WP-CLI consegue tratar dados serializados, mas o alcance continua a ser decisivo. Este exemplo limita a simulação a duas tabelas; substitua os seus nomes se o prefixo for diferente:

wp search-replace 'https://antiguo.example' 'https://nuevo.example' wp_posts wp_postmeta \
  --skip-columns=guid --precise --report-changed-only --dry-run

Reveja o relatório e algumas amostras antes de repetir sem --dry-run. Não é uma migração completa: as opções, as tabelas de plugins e uma rede Multisite podem precisar de outro tratamento. Os GUID não devem ser alterados por rotina ao mover o site. Consulte a referência do search-replace.

Expressões regulares e conteúdo HTML

--regex suporta padrões, mas não transforma uma expressão regular num parser de HTML. O antigo exemplo para eliminar iframes podia coincidir com outros blocos ou ignorar variantes; não o execute em massa sem uma seleção verificada.

Para retirar um iframe concreto, identifique primeiro os artigos e o campo e altere o bloco exato através da API ou do editor da aplicação. Se precisar de automatizar HTML variável, prepare um script que reconheça o elemento e o seu URL e compare o antes e o depois em amostras, incluindo casos que não devem mudar. Não basta uma contagem de ocorrências.

Importar e exportar a base de dados

wp db export e wp db import trabalham com a ligação configurada. Uma importação pode substituir tabelas ou misturar dados. Teste a restauração numa base de dados nova, a partir de um clone que aponte expressamente para ela; verifique o esquema, o conteúdo e as funções antes da mudança final.

Mantenha intacta a base de dados anterior durante o período de recuperação e guarde o SQL fora de diretórios públicos. Não importe uma cópia antiga sobre uma loja que continua a receber encomendas.

Lista de eventos do wp-cron

wp cron event list

Mostra os eventos agendados, a próxima execução e a recorrência. Não é um histórico de execuções concluídas nem comprova que uma tarefa terminou corretamente. Compare os eventos vencidos com o mecanismo de cron e os registos da aplicação; executar tarefas manualmente pode enviar e-mails ou realizar outras ações.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.