Une façon possible d'effectuer cette modification de données consiste à utiliser WP-CLI sur le terminal.
Tout d'abord, vous devez vous assurer d'avoir une sauvegarde et une stratégie de restauration solide en cas de problème. Vous devez également tester cette procédure sur un système local ou de test avec une copie de la base de données active.
Les étapes de base sont, pour itérer sur chaque site de votre réseau et remplacer les URL de chaque site à l'aide de la search-replace
commande WP-CLI .
Voici une doublure bash:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Examinons cela:
for SITE in $(wp site list --field=url);
Celui-ci démarre une boucle pour chaque ligne de la sortie de la commande à l'intérieur $()
et écrit chaque ligne dans la variable $SITE
.
$(wp site list --field=url)
C'est la site list
commande WP-CLI qui vous donne une liste de toutes les URL de site dans votre réseau. Exécutez cette commande uniquement, vous verrez probablement quelque chose comme:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Maintenant
...); do
va juste démarrer la partie de la boucle intérieure.
La commande de boucle interne fait toute la magie (je la divise en deux lignes en utilisant \
pour la lisibilité):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Nous disons WP-CLI de recherche pour $SITE
(par exemple https://your-site.tld/
) et le remplacer par une version légèrement modifiée: ${SITE/http:/https:}
. Il s'agit d'une opération de remplacement de chaîne bash qui remplace http:
par https:
. (Donc, en résolvant les variables, la commande ressemblerait wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
possède de nombreuses options possibles décrites dans la documentation . Dans l'exemple, j'ai utilisé ceux-ci:
--dry-run --precise --network --verbose
--dry-run
et --verbose
sont clairement utiles pour tester la commande.
--network
applique également l'opération de recherche et de remplacement aux tableaux de réseau.
--precise
indique à WP-CLI d'utiliser PHP au lieu de SQL pour rechercher et remplacer les valeurs. Cela garantit que les valeurs sérialisées ne seront pas corrompues.
Enfin, la boucle est fermée avec
; done
Permettez-moi de le souligner à nouveau: testez-le profondément avant de commencer à l'utiliser en production. Vous devez comprendre comment cela fonctionne et ce que fait WP-CLI. J'ai utilisé WP-CLI avant d'effectuer de telles recherches et de remplacer des opérations pour migrer des multisites vers d'autres noms de domaine, mais pas pour passer de http
à https
.
Il peut y avoir des cas limites: WP-CLI lit toujours le wp-config.php
et essaie de trouver un «réseau» correspondant dans la base de données en utilisant les constantes de wp-config.php
. Si vous manipulez un site (la base de données) mais pas l'autre (les constantes wp-config.php
), vous pourriez avoir des ennuis. Mais pour votre cas, je pense que ne sera pas un problème car WP repose généralement sur DOMAIN_CURRENT_SITE
et PATH_CURRENT_SITE
et ils ne changeront pas de toute façon. Mais encore une fois, testez cela en profondeur.
Avec un peu plus de magie bash, vous pouvez également diviser cette boucle en morceaux de 5 ou 10 sites et la parcourir étape par étape.