Расширенный WordPress поиск и замена в базе данных в Linux с помощью sed

При переносе сайта 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.

означает глобальная замена и переадресовывает на новый файл, чтобы не изменять исходный дамп базы данных.

Эта команда заменяет 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.



2017-02-11T02:47:12
Базы данных