Где в базе данных находится Медиа Библиотека?
Я экспортирую сайт WordPress с локального сервера на веб-хостинг и не могу импортировать Медиа Библиотеку, так как хостинг не может подключиться к localhost.
Я загрузил все файлы с локального сервера из директории /wp-content/uploads/..., и думаю, что мне нужно только выделить часть базы данных MySQL, которая содержит Медиа Библиотеку, скорректировать URL и импортировать SQL на хостинг.
Не могли бы вы подсказать, где находится Медиа Библиотека в базе данных MySQL?
Select * from wp_posts where post_type = 'attachment';
Этот запрос вернет все записи в Медиатеке.
После выполнения вы можете экспортировать результирующую таблицу в формате SQL, CSV или любом другом переносимом формате данных. Помните, если вы не уверены, существуют ли записи в вашей базе данных, используйте оператор INSERT IGNORE
вместо INSERT
. (Это возможно через панель экспорта в phpMyAdmin или других клиентах MySQL).
Также существуют записи, ссылающиеся на Медиатеку в каждой записи, такие как вложенные изображения или изображения-миниатюры, которые хранятся в таблице wp_postmeta
. WordPress сохраняет их, чтобы медиафайлы "прикреплялись" к записям или страницам. Если вы хотите экспортировать и их, вам нужно использовать что-то вроде этого:
SELECT * FROM `wp_postmeta`
WHERE meta_key IN (
'_wp_attached_file',
'_wp_attachment_backup_sizes',
'_wp_attachment_metadata',
'_thumbnail_id'
)
И затем вы можете экспортировать их куда угодно. Это все, что я знаю о работе с Медиатекой в WordPress.

Медиабиблиотека хранится как в таблице wp_posts, так и в wp_postmeta.
- wp_postmeta содержит URL изображения
- wp_posts содержит запись для каждого вставленного изображения в записи вместе с ID поста.
Экспорт и импорт этих двух таблиц в формате SQL не сработал - я получил ошибку 'duplicate entry for key 7'...
Экспорт и импорт этих таблиц в формате CSV сработал при использовании "CSV using load data".
Перед импортом я очистил обе таблицы в целевой базе данных.

Альтернативный способ переноса с локального разработчика на удаленный хостинг — использовать WP Migrate DB.

SELECT
p.ID,
p.post_title AS title,
p.post_name AS post_name,
(SELECT meta_value from wp_postmeta where post_id = m.meta_value and meta_key='_wp_attachment_metadata') AS meta_value
FROM
wp_posts p,
wp_postmeta m
WHERE
p.post_type = 'post'
AND p.post_status = 'publish'
AND p.id = m.post_id
AND m.meta_key = '_thumbnail_id'
ORDER BY
p.post_date DESC
LIMIT 5;
Затем используйте PHP функцию unserialize для 'meta_value'
