WordPress импорт миниатюр записей или WordPress import featured images

featured-images-import-wordpress

При переносе записей с одного WordPress сайта на другой столкнулся с проблемой, что при экспорте с помощью встроенного функционала WordPress и импорта с помощью практически встроенного плагина WordPress Importer, не переносятся миниатюры записей (Featured Images). Было испробовано несколько вариантов, но они или не делали того, что мне надо или из-за ограничений хостинга, это было сделать невозможно. Пришлось писать код самому.

Идем по порядку:

  1. Делаем с помощью PHPMyAdmin копии таблиц в базе wp_posts и wp_postmeta в xp_posts и xp_postmeta соответственно.
  2. Делаем с помощью PHPMyAdmin экспорт таблиц xp_post и xp_postmeta
  3. Импортируем таблицы на новом сервере в базу WordPress (предварительно проверив, что имена таблиц изменены)
  4. Копируем изображения с wp-content\uploads старого сервера на новый.
  5. Прописываем данные для доступа к базе в скрипте и запускаем его.
  6. Наслаждаемся результатом

А теперь по порядку:

Пункт 1 делаем или вручную после экспорта таблиц или в PHPMyAdmin выбираем одну таблицу, нажимаем Operations -> Copy table to (database.table)

wordpress-create-copy

После выполнения пункта 3 у вас в базе должны быть эти 4 таблицы

import tables

Для того что бы понять как связаны эти две таблицы, записи и миниатюры записей (Featured Images), выполним три запроса в базе WordPress.

Запрос 1.

Запрос 2.

Запрос 3.

Рассмотри связь между записью и миниатюрой записи (Featured Images) на картинке ниже:

wordpress mysql connection tables

Как вы видите в таблице wp_posts есть запись с id 526 (то что это запись описано в столбце post_type, а то что это основная запись, а не ее версия по столбцу post_status с значением publish). С помощью Запроса 1 мы получаем саму запись и всю связанная с ним информация (версии и изображения).

Так как изображений может быть несколько, для того что бы найти нужное нам используем запрос 2 в таблице wp_postmeta. В результате мы увидим, что есть запись с meta_id = 22375 и значением поля meta_value = 9625. Это означает, что в таблице wp_posts запись с id = 9625 содержит информацию о миниатюре записи (Featured Image).

И Запросом 3 получаем мета данные данного изображения.

В моем случае все записи есть в старой и новой таблице xp_posts и wp_posts (у них может отличаться ID) и есть данные и мета данные миниатюр записей (Featured Image).

Написал простой скрипт, без излишеств и суеверий, провел 2-3 теста и в результате все записи в новой базе получили свои миниатюры (Featured Images).

Код доступен на GitHub.

При написании использовал фреймворк для работы с базой данных — Medoo.

Будут вопросы пишите.

P.S. Возможно понадобится воспользоваться sql запросом для правки ссылок на файлы:

 

Alex

One Comment

Добавить комментарий