Масовий пошук і заміна бази даних WordPress - легкий шлях
Є кілька випадків, де ми повинні змінити URL-адреси в нашій базі даних веб-сайту WordPress. Наприклад, ми повинні зробити це після перенесення бази даних WordPress з одного сайту, наприклад, від http://acme.com
віддаленому виробничому майданчику, до http://acme.dev
веб-сайт місцевого розвитку на нашому комп'ютері.
У WordPress.org розміщено велику кількість плагінів, таких як WP DBManager і WP Migrate DB, а також існує ряд інструментів третьої сторони, які дозволяють вам базу даних імпорту легко. Складна частина має змінити кожен екземпляр URL-адреси всередині бази даних.
Після перенесення бази даних, URL-адреси всередині неї все ще вказують на старий сайт, в цьому випадку до acme.com
. Стару URL-адресу можна знайти в wp_options
Таблиця, встановлена як значення siteurl
і додому
можливостей, і це, ймовірно, також вбудовано в кілька інших рядків і таблиць бази даних. Ці старі URL-адреси можуть перешкоджати правильному запуску сайту, тому вам потрібно змінити їх на нову URL-адресу, в нашому прикладі acme.dev
.
На даний момент, доступ до нашого сайту розробки за адресою acme.dev
буде просто вести на порожню сторінку.
Отже, як змінити всі ці URL-адреси в базі даних?
Запуск запиту SQL
Зазвичай люди запускають наступний SQL Query, який замінює значення siteurl
і додому
опцій у вікні wp_options
таблиці.
UPDATE wp_options SET option_value = замінити (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' АБО option_name = 'siteurl';
Згодом вони використовують інший запит SQL, щоб замінити всі вхідні адреси URL у wp_posts
таблиця, а саме в post_content
стовпця кожного рядка.
UPDATE wp_posts SET post_content = замінити (post_content, 'http://acme.com', 'http://acme.dev');
Виконання цих запитів є прийнятним рішенням, але водночас це не зручно. Це може бути навіть нервовим, бачачи, як база даних може обертатися через простий нагляд у запиті.
Використання WP-CLI
Інший шлях, який ми можемо зробити, і який я знайшов більш зручною альтернативою, є використовуючи командний рядок WP-CLI. Це означає, що вам потрібно встановити WP-CLI.
Припускаючи, що ви встановили WP-CLI і маєте wp
Команда доступна як псевдонім, перейдіть до каталогу, де знаходяться файли сайтів 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
команду.