Домашняя » WordPress » Массовый поиск и замена баз данных WordPress - легкий путь

    Массовый поиск и замена баз данных 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.

    ИЗОБРАЖЕНИЕ: Sequel Pro, поиск по значению базы данных

    На данный момент, доступ к нашему сайту разработки в 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команда.