Массовый поиск и замена баз данных WordPress - легкий путь
Есть несколько случаев, когда мы должны изменить URL-адреса в нашей базе данных сайта WordPress. Например, нам нужно сделать это после переноса базы данных WordPress с одного сайта, например, от http://acme.com
удаленная производственная площадка, до http://acme.dev
сайт местного развития на нашем компьютере.
WordPress.org содержит множество плагинов, таких как WP DBManager и WP Migrate DB, а также есть ряд сторонних инструментов, которые позволяют вам база данных импорта без труда. Сложная часть приходится изменить каждый экземпляр URL внутри базы данных.
После переноса базы данных, URL-адреса внутри нее до сих пор указывают на старый сайт, в этом случае acme.com
. Вы можете найти старый URL в wp_options
таблицу, установите в качестве значения адрес сайта
а также Главная
параметры, и, вероятно, он также встроен в несколько других строк и таблиц в базе данных. Эти старые URL могут в конечном итоге помешать правильной работе вашего сайта, поэтому вам нужно измените их на новый URL, в нашем примере acme.dev
.
На данный момент, доступ к нашему сайту разработки в acme.dev
будет просто вести на пустую страницу.
Итак, как мы можем изменить все эти URL в базе данных?
Выполнение SQL-запроса
Обычно люди запускают следующий SQL-запрос, который заменяет значения адрес сайта
а также Главная
варианты в wp_options
Таблица.
ОБНОВЛЕНИЕ wp_options SET option_value = replace (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' ИЛИ option_name = 'siteurl';
Впоследствии они используют другой SQL-запрос для замены всех вхождений URL в wp_posts
таблица, а именно в POST_CONTENT
столбец каждой строки.
ОБНОВЛЕНИЕ wp_posts SET post_content = replace (post_content, 'http://acme.com', 'http://acme.dev');
Выполнение этих запросов - работоспособное решение, но в то же время не очень удобно. Это может даже нервировать, видя, как база данных может стать бесполезной из-за простого недосмотра в запросе..
Использование WP-CLI
Другой путь, который мы можем сделать, и который я нашел более удобной альтернативой, заключается в используя командную строку WP-CLI. Это означает, что вам нужно будет установить WP-CLI.
Предполагая, что вы установили WP-CLI и имеете в.ч.
команда доступна как псевдоним, перейдите в каталог, где находятся файлы вашего сайта WordPress.
Затем выполните следующую команду:
wp search-replace 'http://acme.com "http://acme.dev
Первый параметр, 'Http://acme.com'
, старая запись должна быть заменена второй, 'Http://acme.dev'
.
Командная строка будет искать через все таблицы в базе данных, не только POST_CONTENT
столбец и wp_options
стол и заменить каждый экземпляр записи, прошедшей через параметры команды.
Как вы можете видеть на скриншоте выше, было сделано 225 замен. И мы сделали это через простую командную строку.
Я думаю, что стоит упомянуть, что мы можем использовать wp search-replace
команда, не только для замены URL-адресов, но любой кусок значение хранится в базе данных, а также. Мы также можем ограничить операцию в определенной таблице, передавая имя таблицы в качестве четвертого параметра, следующим образом:
wp search-replace '.jpg ".webp' wp_posts
Запустив вышеуказанную команду, он будет искать только через wp_posts
, таблица, которая хранит наш контент - сообщения, страницы и т. д. - и заменяет расширение изображения из .JPG
в .WebP
.
WP-CLI делает запутанную операцию SQL более интуитивно понятной, и вы можете работать с ней более удобным способом. Если вы хотите точно настроить свои команды, посмотрите документацию WP-CLI, в которой представлен список опций для выполнения более сложных операций с wp search-replace
команда.