Один из возможных способов сделать это изменение данных - использовать WP-CLI на терминале.
Прежде всего, вы должны убедиться, что у вас есть резервная копия и надежная стратегия восстановления на случай, если что-то пойдет не так. Вам также следует протестировать эту процедуру на локальной или тестирующей системе с копией действующей базы данных.
Основные шаги, чтобы перебрать каждый сайт сети и заменить URL - адрес каждого сайта с помощью WP-CLI в search-replace
команду .
Вот один вкладыш bash:
for SITE in $(wp site list --field=url); do wp search-replace "{$SITE}" "${SITE/http:/https:}" --dry-run --precise --network --verbose; done
Давайте рассмотрим это:
for SITE in $(wp site list --field=url);
Тот запускает цикл для каждой строки вывода команды внутри $()
и записывает каждую строку в переменную $SITE
.
$(wp site list --field=url)
Это WP-CLI site list
команда , которая дает вам список всех URL - адресов сайтов в сети. Запустите эту команду исключительно, вы, вероятно, увидите что-то вроде:
http://your-site.tld/
http://your-site.tld/site2/
http://another-of.your-site.tld/
...
Сейчас же
...); do
просто запустит часть внутреннего цикла.
Команда внутреннего цикла выполняет всю магию (я разделил ее на две строки, используя \
для удобства чтения):
wp search-replace "$SITE" "${SITE/http:/https:}" \
--dry-run --precise --network --verbose
Мы говорим WP-CLI для поиска для $SITE
(например https://your-site.tld/
) и заменить его с немного измененной версии: ${SITE/http:/https:}
. Эта строка заменяет операцию, которая заменяется http:
на https:
. (Таким образом, разрешая переменные, команда будет выглядеть так wp search-replace "http://your-site.tdl/" "https://your-site.tld/"
).
search-replace
имеет много возможных опций, которые описаны в документации . В примере я использовал это:
--dry-run --precise --network --verbose
--dry-run
и --verbose
явно полезны для тестирования команды.
--network
применяет операцию поиска и замены также к сетевым таблицам.
--precise
говорит WP-CLI использовать PHP вместо SQL для поиска и замены значений. Это гарантирует, что сериализованные значения не будут повреждены.
Наконец цикл закрывается
; done
Позвольте мне еще раз подчеркнуть это: проверьте это глубоко, прежде чем начать использовать это в производстве. Вы должны понимать, как это работает и что делает WP-CLI. Раньше я использовал WP-CLI для выполнения таких операций поиска и замены для переноса мультисайтов на другие доменные имена, но не для переключения с http
на https
.
Могут быть некоторые крайние случаи: WP-CLI все еще читает wp-config.php
и пытается найти соответствующую «сеть» в базе данных, используя константы в wp-config.php
. Если вы манипулируете одним сайтом (базой данных), а не другим (константами wp-config.php
), у вас могут возникнуть проблемы. Но для вашего дела, я думаю , что не будет проблемой , как WP обычно зависит от DOMAIN_CURRENT_SITE
и PATH_CURRENT_SITE
и они не будут меняться в любом случае. Но опять же, проверьте это тщательно.
С немного большей магией bash, вы также можете разбить этот цикл на куски по 5 или 10 сайтов и проходить его шаг за шагом.