113

Конвертація іншої бази MySQL у WordPress

На днях мав цікаве завдання. Суть його у двох словах така: є бекап бази даних MySQL із старого сайту (самопис), потрібно перенести публікації з неї у базу WordPress. Зрозуміло, що структура обох баз – різна і прямий import зробити не вийде. Тому довелося написати маленький парсер на php, чи то навіть скрипт конвертації старих записів у пости вордпресу.

Спочатку глянемо на структуру іншої бази, з чого вона складається:

Importing from another MySQL into WordPress

Маємо поля назви, контенту, дати публікації і якісь ідентифікатори id (для чого вони не розібрався, бо бекапу самого сайту не було). Добре, що структура не складна, що спрощує процес.

Спочатку підключаємося до старої бази.

Далі витягуємо публікації і записуємо їх в масив, що відповідатиме структурі бази вордпресу.

З коду бачимо, що у масив йде:

  • post_status із значенням publish, це означатиме, що публікація оприлюднена і буде відображатися на сайті;
  • post_category із значенням array(24), це означатиме, що запис публікується у категорію з id 24;
  • post_date із значенням date(‘Y-m-d H:i:s’,strtotime($row[‘date’])), тут ми формуємо дату із поля бази date.
  • post_title із значенням $row[‘title’], сюди записується назва публікації із поля старої бази title;
  • post_content із значенням $row[‘content’], тут записується саме тіло публікації, тобто текст статті, взятий із поля content.
  • запис $posts[$i] = $post; — формує наш елемент в масиві, де $i виступає, як номер елемента.

Після цього підключимо базу вордпреса і скористаємося функцією wp_insert_post, яка зробить запис публікацій із сформованого масиву.

Весь код разом і з коментарями:

Щоб запустити наш конвертер бази даних, код потрібно записати у php файл (наприклад wp-copy.php), закинути його у корінь вордпресу (там, де знаходиться wp-config.php). І у браузері набрати http://домен/назва_файлу.php

Читайте також: