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-run para 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 --all

    Esse 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 list

    O 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 akismet

    Este comando atualiza o plugin akismet no site mysite.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.

  1. Obter uma lista de todos os plugins na rede:
    wp plugin list --network

    Resultado: Exibe todos os plugins instalados na rede com detalhes como nome, status, atualizações disponíveis e versão.

  2. Filtre os plugins por status (por exemplo, ativo):
    wp plugin list --network --status=active

    Resultado: Uma tabela de plugins ativos na rede.

  3. Obter uma lista de plugins do site principal:
    wp plugin list

    Resultado: Uma lista de plugins para o site principal.

  4. Obter uma lista de plugins ativos para um único site:
    wp plugin list --url=<site-url> --status=active

    Exemplo de entrada:

    wp plugin list --url=blog.example.com --status=active

    Resultado: 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.

  1. Desativar todos os plugins na rede:
    wp plugin deactivate --network --all

    Resultado: Todos os plugins da rede são desativados.

  2. 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.com

    Resultado: Os plugins akismet e hello-dolly estão desativados para o site blog.example.com.

Ativar plugins

Use esses comandos para ativar plugins em toda a rede ou para sites individuais em sua configuração de multisite.

  1. Ativar todos os plugins na rede:
    wp plugin activate --network --all

    Resultado: Todos os plugins da rede são ativados.

  2. 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.com

    Resultado: Os plugins akismet e hello-dolly estão ativados para o site blog.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.

  1. Atualize todos os plugins da rede:
    wp plugin update --network --all

    Resultado: Todos os plugins da rede são atualizados.

  2. Atualizar plugins específicos em toda a rede:
    wp plugin update <plugin-slug-1> <plugin-slug-2> --network

    Exemplo de entrada:

    wp plugin update akismet jetpack bbpress --network

    Resultado: Os plugins akismet, jetpack e bbpress são atualizados na rede.

  3. 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-dolly

    Resultado: O plugin hello-dolly é atualizado para o site blog.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.

  1. Você pode excluir um plugin do contexto atual do WordPress (rede ou site):
    wp plugin delete <plugin-slug>

    Exemplo de entrada:

    wp plugin delete bbpress

    Resultado: O plugin bbpress foi excluído.

  2. 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.com

    Resultado: O plugin bbpress é excluído do site blog.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=blog

    Resultado: Um novo site blog.example.com ou example.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 list

    Você também pode refinar a lista de sites para obter apenas as URLs de todos os sites da rede:

    wp site list --field=url

    Resultado: Uma lista de URLs para cada site.

Esvaziar e excluir sites

  1. Esvaziar o site principal:
    wp site empty

    Resultado: Um aviso de confirmação aparece para deletar todo o conteúdo do site principal.

  2. 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.com

    Resultado: Todo o conteúdo de blog.example.com é excluído, mas o site permanece intacto.

  3. Esvazie todos os sites da rede:
    wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes

    Resultado: 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.

  4. Excluir um único site por ID:
    wp site delete <site-id>

    Exemplo de entrada:

    wp site delete 5

    Resultado: O site com ID 5 é excluído.

  5. Você pode excluir vários sites com o bypass de confirmação:
    wp site delete 2 --yes
    wp site delete 3 --yes

    Resultado: Os sites com IDs 2 e 3 são excluídos. A flag --yes ajuda 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.

  1. Limpar todos os caches (site, Edge Caching, CDN e Redis):
    wp kinsta cache purge --all
  2. Limpar apenas o cache do site:
    wp kinsta cache purge --site
  3. Limpar o cache do CDN:
    wp kinsta cache purge --cdn
  4. 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.

  1. Liste todos os usuários na rede:
    wp user list --network

    Resultado: 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.

  2. Lista de usuários para o site principal:
    wp user list

    Resultado: Exibe uma tabela de usuários para o site principal.

  3. 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=6

    Resultado: 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.

  1. 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.

  2. 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.com

    Resultado: O usuário janedoe é adicionado ao site blog.example.com como um “Editor”.

  3. 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ção John Doe e um apelido Johnny.

Atualizar usuário

Atualizar informações de usuários, como funções ou senhas, é rápido com o WP-CLI.

  1. 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-administrator

    Resultado: Os usuários johndoe, janedoe e adminuser são promovidos a Super Administradores.

  2. 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=securePassword2024

    Resultado: A senha do usuário johndoe é atualizada.

  3. 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=editor

    Resultado: A senha do usuário johndoe é atualizada para newPassword2024 e 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.

  1. Obter meta do usuário:
    wp user meta get <username> <meta_key>

    Exemplo de entrada:

    wp user meta get johndoe nickname

    Resultado: Exibe o valor da meta-chave nickname para o usuário johndoe.

  2. 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ário johndoe.

  3. Excluir meta do usuário:
    wp user meta delete <username> <meta_key>

    Exemplo de entrada:

    wp user meta delete johndoe display_name

    Resultado: Esse comando exclui a meta-chave display_name do usuário johndoe.

Excluir usuários

A remoção de usuários da rede ou de sites específicos é eficiente com o WP-CLI.

  1. Exclua um usuário da rede:
    wp user delete <username|user_id> --network

    Exemplo de entrada:

    wp user delete johndoe --network

    Resultado: O usuário johndoe é removido da rede.

  2. 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.com

    Resultado: O usuário johndoe é removido do site mysite.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.

  1. Redefinir tabelas de dados:
    wp db reset

    Resultado: Todas as tabelas de dados do banco de dados são redefinidas.

  2. Importe o banco de dados:
    wp db import <file-name.sql>

    Exemplo de entrada:

    wp db import network-db.sql

    Resultado: O arquivo network-db.sql preenche as tabelas de dados redefinidas.

  3. 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!

Bud Kraus

Bud Kraus has been working with WordPress as an in-class and online instructor, site developer, and content creator since 2009. He has produced instructional videos and written many articles for WordPress businesses.