Uma maneira possível de fazer essa modificação de dados é usar o WP-CLI no terminal.
Antes de tudo, verifique se você tem um backup e uma sólida estratégia de restauração, caso algo dê errado. Você também deve testar este procedimento em um sistema local ou de teste com uma cópia do banco de dados ativo.
As etapas básicas são: iterar em cada site da sua rede e substituir os URLs de cada site usando o search-replace
comando do WP-CLI .
Aqui está uma linha de base do bash:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Vamos examinar isso:
for SITE in $(wp site list --field=url);
Aquele inicia um loop para cada linha da saída do comando dentro $()
e grava cada linha na variável $SITE
.
$(wp site list --field=url)
Esse é o site list
comando WP-CLI que fornece uma lista de todos os URLs do site na sua rede. Execute este comando apenas, você provavelmente verá algo como:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Agora
...); do
apenas iniciará a parte interna do loop.
O comando loop interno faz toda a mágica (eu o divido em duas linhas usando \
para facilitar a leitura):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Nós dizemos WP-CLI para pesquisar para $SITE
(por exemplo https://your-site.tld/
) e substituí -lo com uma versão ligeiramente modificada: ${SITE/http:/https:}
. Esta é uma cadeia de caracteres bash que substitui a operação que substitui http:
por https:
. (Então, resolvendo as variáveis, o comando seria semelhante wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
possui muitas opções possíveis descritas na documentação . No exemplo, usei estes:
--dry-run --precise --network --verbose
--dry-run
e --verbose
são claramente úteis para testar o comando.
--network
aplica a operação de pesquisa e substituição também às guias da rede.
--precise
diz ao WP-CLI para usar PHP em vez de SQL para pesquisar e substituir os valores. Isso garante que os valores serializados não sejam corrompidos.
Finalmente, o loop é fechado com
; done
Deixe-me enfatizar novamente: teste isso profundamente antes de começar a usá-lo na produção. Você deve entender como ele funciona e o que o WP-CLI faz. Eu usei o WP-CLI antes para executar essas pesquisas e substituir operações para migrar multisites para outros nomes de domínio, mas não para alternar de http
para https
.
Pode haver alguns casos extremos: WP-CLI ainda lê o wp-config.php
e tentar encontrar uma correspondência «rede» na base de dados utilizando as constantes no wp-config.php
. Se você estiver manipulando um site (o banco de dados), mas não o outro (as constantes wp-config.php
), poderá ter problemas. Mas para o seu caso, eu acho que não vai ser um problema como WP normalmente se baseia em DOMAIN_CURRENT_SITE
e PATH_CURRENT_SITE
e eles não vão mudar de qualquer maneira. Mas, novamente, teste isso minuciosamente.
Com um pouco mais de magia do bash, você também pode dividir esse loop em pedaços de 5 ou 10 sites e passar por ele passo a passo.