Ao longo dos anos, os desenvolvedores de WordPress criaram e mantiveram o WP-CLI, uma interface de linha de comando robusta projetada especificamente para operações do WordPress. Como uma ferramenta que economiza tempo, o WP-CLI é particularmente adequado para gerenciar redes WordPress Multisite. Ele permite administrar múltiplos sites em uma única instalação do WordPress de forma simples e eficiente.
Para usar o WP-CLI com eficiência, é essencial que você entenda os principais componentes do WordPress: A interface de administração, a estrutura de arquivos e o banco de dados. Sem esse conhecimento básico, o WP-CLI pode não ser tão eficiente ou benéfico.
Embora o WP-CLI ofereça suporte a comandos padrão, como instalação, atualização, ativação, desativação e exclusão de plugins ou temas, seus recursos vão muito além do que está disponível no painel de controle do WordPress, tornando-o uma ferramenta altamente versátil para o gerenciamento avançado do site.
Este artigo explica como usar o WP-CLI para gerenciar redes WordPress Multisite de forma eficiente e fornece exemplos práticos para ajudar você a começar.
O que é o WP CLI e por que usá-lo?
O WP-CLI é uma ferramenta avançada para gerenciar sites WordPress por meio da linha de comando. Em um ambiente multisite, ele pode simplificar significativamente o gerenciamento de uma rede, permitindo que você execute ações em massa e otimize seu fluxo de trabalho.
Sua verdadeira força está na flexibilidade e na extensibilidade – você pode executar comandos sem esforço em toda a rede ou direcionar sites específicos, além de aprimorar sua funcionalidade com uma variedade de pacotes WP-CLI disponíveis no GitHub e em outros repositórios.
Os desenvolvedores geralmente criam comandos WP-CLI personalizados para simplificar tarefas repetitivas. Por exemplo, você pode usar o WP-CLI para criar um código padrão para temas e plugins, economizando tempo e esforço durante o desenvolvimento.
Se você estiver hospedando com a Kinsta, o WP-CLI já está integrado e acessível via SSH, permitindo que você gerencie sites WordPress com facilidade. Para o desenvolvimento local, o WP-CLI já está disponível no DevKinsta por meio do contêiner devkinsta_fpm. Uma vez dentro do contêiner, você pode navegar até a pasta do seu site e executar comandos. Embora isso exija um pouco de configuração, ele oferece uma maneira poderosa de gerenciar seus sites locais do WordPress de forma eficiente para depuração, teste ou implementação.
Antes de você começar
Os comandos destacados neste artigo foram cuidadosamente escolhidos por serem usados com frequência por desenvolvedores e administradores do WordPress Multisite.
O WP-CLI é uma ferramenta ampla e flexível, o que impossibilita abranger todos os comandos disponíveis. Para manter as explicações claras e práticas, focamos em exemplos simples e acionáveis para começar.
Como o WP-CLI é baseado em comandos do Unix, talvez você não encontre um equivalente no WP-CLI para comandos que já existem no Unix.
Observações importantes sobre o WP-CLI
A estrutura de comandos do WP-CLI é flexível, permitindo que você obtenha o mesmo resultado de várias maneiras. Por exemplo, ambos os exemplos a seguir são válidos:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Ou:
wp user create johndoe --display_name="John Doe" [email protected] --nickname="Johnny"
A ordem das flags, parâmetros e valores não importa, desde que o comando e o subcomando sejam declarados.
Práticas recomendadas para executar comandos WP-CLI
Siga estas práticas recomendadas para evitar possíveis problemas:
- Sempre tenha um backup atual disponível, especialmente porque alguns desses comandos alterarão permanentemente o(s) seu(s) site(s).
- Use um site de teste sempre que possível. Se você estiver usando Kinsta, cada instalação do WordPress inclui um ambiente de teste gratuito para testes seguros. Você pode facilmente enviar alterações entre os ambientes de teste e de produção.
- Utilize a flag
--dry-runpara testar as alterações no banco de dados antes de aplicá-las.
Comandos essenciais do WP-CLI para gerenciamento do WordPress Multisite
Os comandos WP-CLI em uma rede multisite podem ter como alvo diferentes níveis de ação:
- Em toda a rede: Comandos aplicados em todos os sites da rede. Por exemplo:
wp plugin deactivate --network --allEsse comando desativa todos os plugins em todos os sites da rede.
- Site principal: Comandos aplicados ao site principal criado durante a configuração do Multisite. Por exemplo:
wp plugin listO comando acima lista todos os plugins instalados somente no site principal.
- Sites secundários: Comandos direcionados a sites individuais dentro da rede, especificados por seus URLs. Por exemplo:
wp plugin update --url=mysite.example.com akismetEste comando atualiza o plugin
akismetno sitemysite.example.com.
Para facilitar o gerenciamento da sua rede Multisite, agrupamos os comandos WP-CLI nestas seções:
Comandos básicos
Esses comandos fundamentais ajudam você a solucionar problemas e gerenciar plugins e temas em sua rede.
Trabalhando com listas
O WP-CLI facilita a obtenção de listas de plugins e outros componentes em seu ambiente Multisite.
- Obter uma lista de todos os plugins na rede:
wp plugin list --networkResultado: Exibe todos os plugins instalados na rede com detalhes como nome, status, atualizações disponíveis e versão.
- Filtre os plugins por status (por exemplo, ativo):
wp plugin list --network --status=activeResultado: Uma tabela de plugins ativos na rede.
- Obter uma lista de plugins do site principal:
wp plugin listResultado: Uma lista de plugins para o site principal.
- Obter uma lista de plugins ativos para um único site:
wp plugin list --url=<site-url> --status=activeExemplo de entrada:
wp plugin list --url=blog.example.com --status=activeResultado: Uma tabela de plugins ativos para o site
blog.example.com.
Além de filtrar os plugins por status=active, você também pode usar os seguintes filtros:
inactive: Plugins que estão instalados, mas não ativos.active-network: Plugins ativos na rede.must-use: Plugins de uso obrigatório que são carregados automaticamente.
Desativar plugins
Desativar plugins é frequentemente necessário ao solucionar problemas ou se preparar para atualizações. O WP-CLI permite desativar plugins em toda a rede ou em sites específicos.
- Desativar todos os plugins na rede:
wp plugin deactivate --network --allResultado: Todos os plugins da rede são desativados.
- Desativar plugins específicos para um único site:
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>Exemplo de entrada:
wp plugin deactivate akismet hello-dolly --url=blog.example.comResultado: Os plugins
akismetehello-dollyestão desativados para o siteblog.example.com.
Ativar plugins
Use esses comandos para ativar plugins em toda a rede ou para sites individuais em sua configuração de multisite.
- Ativar todos os plugins na rede:
wp plugin activate --network --allResultado: Todos os plugins da rede são ativados.
- Ativar plugins específicos para um único site:
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>Exemplo de entrada:
wp plugin activate akismet hello-dolly --url=blog.example.comResultado: Os plugins
akismetehello-dollyestão ativados para o siteblog.example.com.
Instalar plugins
A instalação de plugins com o WP-CLI é rápida e eficiente. Depois de instalados, os plugins podem ser ativados para sites individuais ou em toda a rede.
O comando a seguir pode ser usado para instalar um plugin para a rede:
wp plugin install <plugin-slug>
Exemplo de entrada:
wp plugin install akismet
Resultado: O plugin akismet está instalado e pronto para ser ativado.
Atualizar plugins
Mantenha seus plugins atualizados em toda a rede ou em sites específicos usando esses comandos.
- Atualize todos os plugins da rede:
wp plugin update --network --allResultado: Todos os plugins da rede são atualizados.
- Atualizar plugins específicos em toda a rede:
wp plugin update <plugin-slug-1> <plugin-slug-2> --networkExemplo de entrada:
wp plugin update akismet jetpack bbpress --networkResultado: Os plugins
akismet,jetpackebbpresssão atualizados na rede. - Atualize um plugin para um único site:
wp plugin update --url=<site-url> <plugin-slug>Exemplo de entrada:
wp plugin update --url=blog.example.com hello-dollyResultado: O plugin
hello-dollyé atualizado para o siteblog.example.com.
Excluir plugins
A remoção de plugins é simples com o WP-CLI, quer você esteja trabalhando em um único site ou em uma rede multisite.
- Você pode excluir um plugin do contexto atual do WordPress (rede ou site):
wp plugin delete <plugin-slug>Exemplo de entrada:
wp plugin delete bbpressResultado: O plugin
bbpressfoi excluído. - Excluir um plugin de um site específico em uma rede multisite:
wp plugin delete <plugin-slug> --url=<site-url>Exemplo de entrada:
wp plugin delete bbpress --url=blog.example.comResultado: O plugin
bbpressé excluído do siteblog.example.com.
Gerenciamento de rede
Gerenciar sites em uma rede WordPress Multisite é uma tarefa crucial. Abaixo estão os comandos WP-CLI comuns para ajudar você a criar, gerenciar e excluir sites com eficiência, bem como lidar com operações de cache.
Criar sites
Adicionar novos sites à sua rede é simples com o WP-CLI.
- Comando básico: Crie um novo site especificando um slug exclusivo.
wp site create --slug=<site-name>Exemplo de entrada:
wp site create --slug=blogResultado: Um novo site
blog.example.comouexample.com/blog, dependendo da configuração da rede, é criado e fica automaticamente ativo.
- Comando avançado: Alternativamente, flags podem ser adicionadas ao comando. No exemplo abaixo, um site é criado com um título e um administrador específico.
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>Exemplo de entrada:
wp site create --slug=blog --title="Blog Site" [email protected]Resultado: Um site intitulado “Blog Site” é criado com
[email protected]como administrador.
- Listar todos os sites: Recupera uma tabela que exibe IDs de sites, URLs, datas de criação e datas da última atualização:
wp site listVocê também pode refinar a lista de sites para obter apenas as URLs de todos os sites da rede:
wp site list --field=urlResultado: Uma lista de URLs para cada site.
Esvaziar e excluir sites
- Esvaziar o site principal:
wp site emptyResultado: Um aviso de confirmação aparece para deletar todo o conteúdo do site principal.
- Esvaziar um único site (remove todos os artigos, páginas, links e taxonomias):
wp site empty --url=<site-url>Exemplo de entrada:
wp site empty --url=blog.example.comResultado: Todo o conteúdo de
blog.example.comé excluído, mas o site permanece intacto. - Esvazie todos os sites da rede:
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yesResultado: Este comando executa um loop por todas as URLs e esvazia o conteúdo de cada site sem a necessidade de confirmação para cada um.
- Excluir um único site por ID:
wp site delete <site-id>Exemplo de entrada:
wp site delete 5Resultado: O site com ID
5é excluído. - Você pode excluir vários sites com o bypass de confirmação:
wp site delete 2 --yes wp site delete 3 --yesResultado: Os sites com IDs
2e3são excluídos. A flag--yesajuda você a ignorar os prompts.
Limpar cache
Como vários tipos de cache são armazenados de maneiras diferentes aqui, utilizamos o plugin Must-Use da Kinsta. Ele é instalado automaticamente para cada site WordPress em nosso sistema.
Este comando limpa todo o cache, incluindo cache do site, Edge Caching, cache do CDN e cache do Redis.
- Limpar todos os caches (site, Edge Caching, CDN e Redis):
wp kinsta cache purge --all - Limpar apenas o cache do site:
wp kinsta cache purge --site - Limpar o cache do CDN:
wp kinsta cache purge --cdn - Limpar o cache de objetos:
wp cache purge
Gerenciamento de usuários
O WP-CLI simplifica o gerenciamento de usuários em um ambiente multisite, permitindo que você execute tarefas de forma rápida e eficiente. Esta seção aborda operações comuns de gerenciamento de usuários:
Listar usuários
Listar usuários em uma rede ou em um site específico é fácil com o WP-CLI.
- Liste todos os usuários na rede:
wp user list --networkResultado: Uma tabela mostrando o ID do usuário, o login, o nome de exibição, o nome de usuário, a data de registro e a função de cada usuário ou consulta de lista de usuários.
- Lista de usuários para o site principal:
wp user listResultado: Exibe uma tabela de usuários para o site principal.
- Liste os usuários de um site específico (site secundário):
wp user list --blog_id=<id> wp user list --url=<url>Exemplo de entrada:
wp user list --blog_id=6Resultado: Exibe uma tabela de todos os usuários do site com ID de blog
6.
Criar usuários
Em uma rede Multisite, os usuários são registrados na rede por padrão. Suas funções dependem do fato de serem o primeiro usuário adicionado a um site ou usuários subsequentes. Os nomes de usuários devem ter pelo menos quatro caracteres.
- Adicione um novo usuário ao site principal:
wp user create <username> <email>Exemplo de entrada:
wp user create johndoe [email protected]Resultado: Uma mensagem de sucesso é exibida, incluindo uma senha gerada.
- Adicionar um novo usuário a um site específico com uma função especificada:
wp user create <username> <email> --role=<role> --url=<url>Exemplo de entrada:
wp user create janedoe [email protected] --role=editor --url=blog.example.comResultado: O usuário
janedoeé adicionado ao siteblog.example.comcomo um “Editor”. - Adicionar meta de conta de usuário durante a criação:
wp user create <username> <email> --display_name=<name> --nickname=<nickname>Exemplo de entrada:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"Resultado: O usuário
johndoeé criado com um nome de exibiçãoJohn Doee um apelidoJohnny.
Atualizar usuário
Atualizar informações de usuários, como funções ou senhas, é rápido com o WP-CLI.
- Altere (promova ou faça downgrade) as funções do usuário:
wp user update <username|email|user_id> --role=<role>Exemplo de entrada:
wp user update johndoe janedoe adminuser --role=super-administratorResultado: Os usuários
johndoe,janedoeeadminusersão promovidos a Super Administradores. - Redefinir ou alterar a senha de um usuário:
wp user update <username> --user_pass=<new_password>Exemplo de entrada:
wp user update johndoe --user_pass=securePassword2024Resultado: A senha do usuário
johndoeé atualizada. - Comandos Daisy-chained: O WP-CLI permite que você combine várias ações em um único comando, economizando tempo ao editar usuários. Por exemplo, você pode atualizar simultaneamente a senha e a função de um usuário.
wp user update <user> --user_pass=<new_password> --role=<status>Exemplo de entrada:
wp user update johndoe --user_pass="newPassword2024" --role=editorResultado: A senha do usuário
johndoeé atualizada paranewPassword2024e sua função é alterada para “Editor”.
Gerenciar meta de usuários
A meta de usuário permite adicionar, recuperar ou deletar metadados para contas de usuário.
- Obter meta do usuário:
wp user meta get <username> <meta_key>Exemplo de entrada:
wp user meta get johndoe nicknameResultado: Exibe o valor da meta-chave
nicknamepara o usuáriojohndoe. - Adicionar meta do usuário:
wp user meta add <username> <meta_key> <meta_value>Exemplo de entrada:
wp user meta add johndoe display_name "Mr. John Doe"Resultado:
Mr. John Doeé definido como o nome de exibição do usuáriojohndoe. - Excluir meta do usuário:
wp user meta delete <username> <meta_key>Exemplo de entrada:
wp user meta delete johndoe display_nameResultado: Esse comando exclui a meta-chave
display_namedo usuáriojohndoe.
Excluir usuários
A remoção de usuários da rede ou de sites específicos é eficiente com o WP-CLI.
- Exclua um usuário da rede:
wp user delete <username|user_id> --networkExemplo de entrada:
wp user delete johndoe --networkResultado: O usuário
johndoeé removido da rede. - Excluir um usuário de um site específico:
wp user delete <username|user_id> --url=<site-url>Exemplo de entrada:
wp user delete johndoe --url=mysite.example.comResultado: O usuário
johndoeé removido do sitemysite.example.com.
Gerenciamento do banco de dados
O WP-CLI oferece uma alternativa poderosa a ferramentas como o phpMyAdmin para gerenciar seu banco de dados. Esta seção aborda operações comuns do banco de dados que você pode executar usando o WP-CLI:
Exportação de um banco de dados
Com o WP-CLI, você pode exportar o banco de dados como um arquivo SQL. O arquivo exportado é salvo no diretório raiz da sua instalação do WordPress.
wp db export
Resultado: Um arquivo SQL é criado no diretório raiz.
Se o arquivo exportado tiver um nome pouco agradável, você poderá renomeá-lo usando o seguinte comando:
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Exemplo de entrada:
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Resultado: O arquivo cilawaw…nPb--9545b3f.sql é renomeado para network-db.sql.
Download de um banco de dados
Para fazer o download do arquivo do banco de dados exportado para o seu computador local, use o comando curl.
curl <remote-url> -o <local-path>
Exemplo de entrada:
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
Resultado: O arquivo network-db.sql é baixado para o diretório local Downloads.
Carregamento de um banco de dados
Você pode carregar um arquivo do banco de dados para o diretório raiz da instalação do Multisite usando o comando scp.
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
Exemplo de entrada:
scp ~/Downloads/network-db.sql [email protected]:/var/www/example.com/public_html
Resultado: O arquivo network-db.sql é carregado no diretório raiz da sua instalação do WordPress após a autenticação.
Importação de um banco de dados
Antes de importar um banco de dados, talvez você precise redefinir as tabelas de dados existentes.
- Redefinir tabelas de dados:
wp db resetResultado: Todas as tabelas de dados do banco de dados são redefinidas.
- Importe o banco de dados:
wp db import <file-name.sql>Exemplo de entrada:
wp db import network-db.sqlResultado: O arquivo
network-db.sqlpreenche as tabelas de dados redefinidas. - Excluir o arquivo SQL importado: Por motivos de segurança, exclua o arquivo SQL após a importação:
rm <file-name.sql>
Exemplos práticos
Estes comandos mostram como acelerar e simplificar seu fluxo de trabalho. Apesar de alguns serem mais complexos, eles se baseiam em comandos simples para realizar operações úteis.
Instalar e ativar plugins e regenerar miniaturas simultaneamente
Esse comando percorre todos os sites da rede, instala e ativa dois plugins e gera novamente miniaturas de imagens para cada site.
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
Exemplo de entrada:
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
Resultado: Os plugins Akismet e BBPress são instalados e ativados em todos os sites, e as miniaturas de imagens são geradas novamente.
Adicionar um campo meta personalizado para todos os usuários
Este comando percorre todos os sites, recupera a lista de usuários e adiciona um campo meta personalizado para cada usuário.
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} <meta-key> <meta-value> --url=%'
Exemplo de entrada:
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color "" --url=%'
Resultado: Um campo meta personalizado, favorite_color, é adicionado para todos os usuários em todos os sites.
Para exibir o campo favorite_color, você precisará usar o arquivo functions.php ou criar um plugin personalizado.
Converter uma instalação de site único para Multisite
O WP-CLI facilita a conversão de um site autônomo do WordPress em uma rede multisite.
wp core multisite-convert
Resultado: O site único é convertido em uma rede multisite.
Antes da conversão, certifique-se de desativar todos os plugins.
Após a conversão, configure as URLs da rede no arquivo wp-config.php. Escolha entre usar subdomínios (por exemplo, site.example.com) ou subdiretórios (por exemplo, example.com/site). Além disso, verifique o arquivo .htaccess, pois as regras de reescrita de URLs (manipuladas pelo módulo mod_rewrite do Apache) podem precisar de atualizações manuais para garantir que seus permalinks e estrutura do site funcionem corretamente.
Resumo
Este guia destaca o poder e a flexibilidade do WP-CLI para gerenciar ambientes WordPress Multisite, tornando-o uma ferramenta essencial para desenvolvedores e administradores que buscam eficiência e controle. Desde a manipulação de plugins, usuários e bancos de dados até a realização de operações avançadas, como a conversão de sites únicos em multisite, o WP-CLI simplifica tarefas complexas com precisão e velocidade.
A Kinsta oferece uma ferramenta WP-CLI inestimável e extensível que permite o gerenciamento perfeito de redes WordPress Multisite. Seja em ambientes de produção, teste ou utilizando nossa ferramenta de desenvolvimento local, o DevKinsta, o WP-CLI está sempre disponível para otimizar seu fluxo de trabalho.
Comece a criar sites, adicionar plugins, usuários e muito mais com o WP-CLI!