Skip to content

Все для WordPress, веб-розробки — і не тільки

🔍 Пошук і заміна в phpMyAdmin: як замінити текст і URL у базі даних WordPress

🔍 Пошук і заміна в phpMyAdmin: як замінити текст і URL у базі даних WordPress

💡 Швидкий огляд:

  • що таке пошук і заміна в phpMyAdmin і коли це потрібно;
  • покроковий SQL-запит для заміни тексту в усій базі WordPress;
  • як масово замінити старі URL на нові через phpMyAdmin;
  • огляд двох плагінів-альтернатив, Better Search Replace і Search & Replace.

Що таке пошук і заміна в phpMyAdmin і навіщо це потрібно

Уявіть: ви змінили домен, перейменували бренд або оновили структуру постійних посилань. Десь у надрах бази даних WordPress лишилися сотні старих згадок, у постах, метаполях, налаштуваннях тем. Відкривати кожен запис і правити руками? На сайті з пʼяти сторінок, можливо. На двохстах це вже втрачений день.

phpMyAdmin — це вебінтерфейс для керування MySQL, який іде в комплекті з cPanel практично будь-якого хостингу. За його допомогою ви виконуєте SQL-запит, який за один прохід знаходить і замінює вказаний рядок у всіх записах бази даних. Жодних плагінів, жодного зайвого коду, тільки ви, браузер і правильний запит.

Однак у методу є нюанс: помилка в синтаксисі може зачепити не ті дані. Саме тому ми розберемо запити по кісточках, а наприкінці покажемо пару плагінів, які прибирають ручний ризик і дають попередній перегляд до заміни.

Як знайти і замінити текст через phpMyAdmin

Найпоширеніший сценарій: замінити слово або фразу в усіх постах одразу. Наприклад, стара назва компанії на нову, застарілий термін або зламаний email. Для цього потрібен один UPDATE-запит у phpMyAdmin.

Крок 1: увійдіть у phpMyAdmin через cPanel

Відкрийте cPanel вашого хостингу, знайдіть розділ «Бази даних» і натисніть на іконку phpMyAdmin. Увійдіть, зазвичай логін і пароль ті самі, що й для cPanel.

Крок 2: виберіть базу даних сайту

Після входу зліва зʼявиться список баз даних. Натисніть на ту, яка стосується вашого сайту WordPress. Якщо не памʼятаєте назву, подивіться у файлі wp-config.php: рядок define('DB_NAME', 'имя_базы').

Крок 3: перейдіть на вкладку SQL

У верхній панелі інструментів натисніть кнопку SQL, відкриється вікно для введення запиту.

Вікно SQL-запиту в інтерфейсі phpMyAdmin

Крок 4: введіть SQL-запит для заміни тексту

Базовий синтаксис виглядає так:

1UPDATE table_name SET field_name =
2REPLACE(field_name, 'что_ищем', 'на_что_меняем');

Для заміни тексту в усіх постах WordPress запит матиме такий вигляд:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'старый текст', 'новый текст');

Розбір по частинах: UPDATE wp_posts, працюємо з таблицею постів; SET post_content, змінюємо вміст поля post_content; REPLACE(post_content, 'A', 'B'), функція шукає підрядок A і замінює його на B. Важливо: префікс таблиць може бути не wp_, перевірте в wp-config.php значення $table_prefix.

⚠️ Перед виконанням обовʼязково зробіть бекап бази даних. У cPanel для цього є розділ Backup, або використовуйте плагін на кшталт UpdraftPlus. SQL-запит незворотний, кнопки «скасувати» немає.

Крок 5: виконайте запит

Натисніть кнопку «Go» (або «Вперед») у правому нижньому куті. phpMyAdmin виконає запит і покаже повідомлення з кількістю зачеплених рядків, наприклад, «Уражено рядків: 47». Це означає, що 47 записів містили шуканий текст і були оновлені.

Результат виконання SQL-запиту в phpMyAdmin

Готово. Пройдіться сайтом і перевірте кілька сторінок, старий текст має бути замінений.

Як замінити URL у базі даних WordPress через phpMyAdmin

Заміна URL складніша за заміну тексту, тому що адреси зберігаються не в одній таблиці, а розкидані по кількох. Ось де шукати:

Список таблиць бази даних WordPress у phpMyAdmin
  • Пости й сторінки: поле post_content у таблиці wp_posts
  • Метаполя (довільні поля): meta_value у wp_postmeta
  • Налаштування тем і плагінів: option_value у wp_options
  • Коментарі: comment_content у wp_comments
  • Меню (старий менеджер посилань): link_url і link_image у wp_links
  • Метадані користувачів: meta_value у wp_usermeta

Щоб охопити все одразу, виконайте такий набір запитів (копіюйте по одному і тисніть Go після кожного):

1UPDATE wp_options SET option_value =
2REPLACE(option_value, 'http://old-domain.com', 'https://new-domain.com')
3WHERE option_name = 'home' OR option_name = 'siteurl';
4
5UPDATE wp_posts SET post_content =
6REPLACE(post_content, 'http://old-domain.com', 'https://new-domain.com');
7
8UPDATE wp_postmeta SET meta_value =
9REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');
10
11UPDATE wp_comments SET comment_content =
12REPLACE(comment_content, 'http://old-domain.com', 'https://new-domain.com');
13
14UPDATE wp_links SET link_url =
15REPLACE(link_url, 'http://old-domain.com', 'https://new-domain.com');
16
17UPDATE wp_usermeta SET meta_value =
18REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');

⚠️ Ще раз: перед запуском, повний бекап. Якщо сайт використовує серіалізовані дані (більшість тем і плагінів, так), проста текстова заміна може зламати структуру. У такому разі краще використовувати плагіни з наступного розділу, вони вміють коректно обробляти серіалізацію.

Плагіни для пошуку і заміни у WordPress

Ручний метод через phpMyAdmin швидкий, але небезпечний для новачків. Плагіни вирішують дві головні проблеми: дають попередній перегляд до заміни (dry run) і коректно працюють із серіалізованими даними. Розглянемо два перевірені варіанти.

Better Search Replace

Інтерфейс плагіна Better Search Replace в адмінці WordPress

Better Search Replace, найпопулярніший безкоштовний плагін для цього завдання: понад мільйон активних встановлень. Розроблений на базі відкритого скрипту interconnect/it Search Replace DB і використовує нативні функції WordPress, а не сирі SQL-запити.

Як працювати з плагіном:

  • Встановіть і активуйте його з розділу «Плагіни → Додати новий».
  • Перейдіть у «Інструменти → Better Search Replace».
  • У полі «Search for» введіть шуканий текст або URL.
  • У полі «Replace with», те, на що замінюємо.
  • У блоці «Select tables» виберіть потрібні таблиці (або всі).
  • Увімкніть «Run as dry run», це тестовий прогін без реальної заміни. Плагін покаже, скільки збігів знайдено і в яких таблицях.
Налаштування плагіна Better Search Replace з опцією пробного прогону

Після перевірки вимкніть «Dry run» і запустіть заміну повторно, тепер уже з реальним записом змін.

Плюс: коректно обробляє серіалізовані дані, URL не «поїде» після заміни. Мінус: не робить автоматичний бекап перед заміною (зробіть його самі, тим самим UpdraftPlus).

Ціна: безкоштовно.

🔗 Better Search Replace на WordPress.org

Search & Replace

Інтерфейс плагіна Search and Replace в панелі інструментів WordPress

Search & Replace від команди WP Media, альтернатива з вбудованим бекапом. Перед заміною плагін уміє створювати дамп бази даних і зберігати його. Якщо щось пішло не так, відновлюєте з бекапу за два кліки.

Додаткові можливості:

  • заміна домену/URL в один клік (окрема вкладка «Replace Domain / URL»);
  • підтримка CSV для пакетної заміни (формат: «що шукаємо; на що міняємо»);
  • зміна префікса таблиць;
  • підтримка мультисайту.

Плагін має 100 000+ активних встановлень і рейтинг 4.3. Офіційно він не тестувався з останніми версіями WordPress, але відгуки користувачів підтверджують стабільну роботу на WP 6.8 з PHP 8.2.

Мінус: інтерфейс менш інтуїтивний, ніж у Better Search Replace, поріг входу трохи вищий.

Ціна: безкоштовно.

🔗 Search & Replace на WordPress.org

Що вибрати: плагін чи phpMyAdmin?

Короткий орієнтир: змінюєте 1-2 слова в тексті постів і впевнені в синтаксисі SQL, phpMyAdmin швидший. Змінюєте домен, працюєте із серіалізованими даними або не хочете чіпати базу руками, ставте Better Search Replace і робіть dry run. Потрібен вбудований бекап і пакетна заміна, Search & Replace.

⁉️🤔 Часті питання

Чи можна скасувати заміну після виконання SQL-запиту?

Ні, SQL-запит у phpMyAdmin незворотний. Саме тому перед будь-якою заміною обовʼязковий повний бекап бази даних. Зробіть його через cPanel (розділ Backup → Download MySQL Database) або плагіном UpdraftPlus. З бекапом ви завжди відкотите базу до стану «до».

Що таке серіалізовані дані і чому проста заміна URL їх ламає?

Серіалізація — це спосіб пакування складних структур (масивів, обʼєктів) у рядок для зберігання в базі. WordPress використовує її для налаштувань тем, даних плагінів і віджетів. Рядок s:26:"http://old-domain.com" означає «рядок довжиною 26 символів». Якщо ви заміните домен на коротший або довший, довжина в s:26 перестане відповідати реальності, і WordPress не зможе прочитати дані. Плагіни (Better Search Replace, Search & Replace) перераховують довжину автоматично. Пряма SQL-заміна, ні.

Обовʼязково чи використовувати phpMyAdmin або можна через WP-CLI?

WP-CLI, чудова альтернатива, якщо у вас є доступ по SSH. Команда wp search-replace 'старый-домен' 'новый-домен' робить те саме, але з автоматичною обробкою серіалізації. Це навіть безпечніше за phpMyAdmin, WP-CLI працює через WordPress API, а не напряму з MySQL. Однак не всі хостинги дають SSH-доступ на дешевих тарифах, phpMyAdmin доступний практично завжди.

Чи можна замінити тільки в певних постах, а не в усій базі?

Так, додайте в SQL-запит умову WHERE. Наприклад, щоб замінити текст тільки в постах певної категорії: спочатку знайдіть ID категорії, потім:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'старое', 'новое')
3WHERE ID IN (
4 SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = 12
5);

Але значно простіше зробити повну заміну з dry run у Better Search Replace, плагін покаже таблицю і кількість збігів, а ви вручну знімете галочки з непотрібних таблиць.

Що робити, якщо сайт перестав відкриватися після заміни URL?

Перше, не панікувати. Друге, відновити базу з бекапу (ви ж зробили бекап?). Третє, ймовірна причина: биті серіалізовані дані. Використовуйте плагін Better Search Replace, він спеціально спроєктований для заміни доменів і коректно обробляє серіалізацію. Після відновлення бази запустіть заміну через нього.

Який метод пошуку і заміни вибрати: підсумковий розклад

Вибір залежить від трьох факторів: що змінюєте, наскільки великий сайт і ваш рівень комфорту з SQL.

  • Текст у кількох постах → phpMyAdmin з UPDATE wp_posts. Швидко, але без попереднього перегляду.
  • Повна зміна домену або перехід на HTTPS → Better Search Replace. Dry run покаже всі зачеплені рядки до реальної заміни, а вбудована обробка серіалізації вбереже від битих даних. Це золотий стандарт для міграцій.
  • Потрібен вбудований бекап → Search & Replace. Створює дамп бази перед заміною і вміє його відновлювати.

Головне правило не змінюється: бекап, бекап і ще раз бекап, перед будь-яким торканням бази даних. Одна команда UPDATE без резервної копії може покласти сайт, а з копією це просто робочий інструмент, який економить години рутини.

1