Домашня » 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 Таблиця, встановлена ​​як значення siteurl і додому можливостей, і це, ймовірно, також вбудовано в кілька інших рядків і таблиць бази даних. Ці старі URL-адреси можуть перешкоджати правильному запуску сайту, тому вам потрібно змінити їх на нову URL-адресу, в нашому прикладі acme.dev.

    IMAGE: Sequel Pro, пошук значення бази даних

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