При переносе сайта WordPress или WooCommerce магазина на новый домен, вы можете найти некоторые URL-адреса или пути не обновленными. Точно так же при переходе с HTTP на HTTPS вы можете получить ошибки смешанного содержания, как правило, это может быть исправлено путем обновления базы данных. Традиционно существуют некоторые плагины и скрипты, которые помогут вам обновить базу данных, чтобы решить эти проблемы, если у вас все еще есть проблемы, этот пост должен помочь вам исправить пути и URL-адреса в вашей базе данных WordPress.
Мы впервые столкнулись с этой проблемой, когда обнаружили плагин Ultimate VC Add-ons, чтобы кодировать двоеточие и косую черту по- разному , как это http%3A%2F%2F
Я предполагаю, что у вас уже есть дамп базы данных WordPress, созданный с помощью PhpMyAdmin, плагина Adminer, дамп MySQL или WP-CLI.
Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed
Я собираюсь использовать инструменты Linux grep
и sed
для достижения максимальной скорости. Если у вас нет доступа к Linux, то вы можете использовать WordPress плагин Better Search and Replace.
Поиск вхождений
Мы можем смоделировать с Grep, используя -c
флаг, которая будет подсчитывать количество раз он находит строку domain.ru
grep -c 'andreyex.ru' database.sql
Вы получите целое число в качестве вывода, если вы видите 0
, то нет вхождения domain.ru в базе данных
234
Закодированный URL
Некоторые плагины используют кодировку URL, которая использует этот формат для миграции HTTP и HTTPS %3A = :
и %2F = /
.
Для того, чтобы проверить, есть ли у вас какие-либо из них, в вашей базы данных, используете эту команду.
grep -c 'http%3A%2F%2F' database.sql
Слеши
Некоторые плагины избегают \ и /
и могут быть легко пропущены.
grep -c 'http:\/\/domain.ru' database.sql
Путь WordPress
Иногда плагины хранят информацию о пути хранения на вашем хосте, узнать можно с помощью этой команды
grep -c '/public_html/domain.ru' database.sql
Фактическая замена
Многие учебники используют в /
качестве разделителя sed
, я использую #,
чтобы сделать его более удобным для чтения. Это также означает, что вам не придется искать какие – либо косые черты (\/
) в вашей команде SED.
g
означает глобальная замена и >
переадресовывает на новый файл, чтобы не изменять исходный дамп базы данных.
Эта команда заменяет domain.ru
на newdomain.ru
в файле dump.sql
sed 's#domain.com#newdomain.ru#g' dump.sql > staging-or-newdomain.sql
В этом примере есть вложенная папка для установки WordPress, #
помогает maintan сохранить читабельность.
sed 's#domain.ru/oldfolder#newdomain.ru/newfolder#g' dump.sql > staging-or-newdomain.sql
Закодированный URL
Замена кодирующейся строки URL
sed 's#http%3A%2F%2Fdomain.ru#http%3A%2F%2Fnewdomain.ru#g' dump.sql > staging-or-newdomain.sql
Это как заменить закодированые строки URL доменов в подпапках
sed 's#http%3A%2F%2Fdomain.ru%2Fsubfolder#http%3A%2F%2Fnewdomain.ru%2Fsubfolder#g' dump.sql > staging-or-newdomain.sql
Слеши
Если вы нашли косую черту, эта команда заменит их
sed 's#http:\/\/domain.ru#http:\/\/newdomain.ru#g' dump.sql > staging-or-newdomain.sql
WordPress путь поиска и замены
Замена пути
sed 's#/public_html/andreyex.ru#/public_html/newfolder#g' dump.sql > staging-or-newdomain.sql
Это должно работать в большинстве баз данных WordPress, дайте нам знать в комментариях, если вы обнаружите какие-либо другие необычные шаблоны!
Использование Gzip для сжатия новых Dump
Мы можем сжать модифицированный дамп с помощью Gzip легко, он значительно сократит файл .sql
cat dump.sql | gzip > dump.sql.gz
Теперь вы можете повторно импортировать измененный дамп с помощью WP-CLI, PhpMyAdmin или Adminer.