Вопрос или проблема
Как экспортировать ревизии для постов?
Я клонировал сайт вместе с его полной базой данных WordPress 4 месяца назад.
После клона были внесены изменения в существующие посты, и новые посты были добавлены в оригинальную базу данных.
Как я могу извлечь эти ревизии и добавить их на страницы/посты новой базы данных? Или экспортировать их целиком со всеми данными ревизий? (В клоне изменений не было)
Кажется, вы можете экспортировать посты только с помощью инструмента экспорта WordPress, но это не экспортирует ревизии и также не добавляет новые ревизии к существующим постам.
Это возможно сделать через пользовательские расширенные запросы или с помощью плагина?
Логика такого запроса будет выглядеть примерно так:
1) Получить все посты с даты по дату
2) Извлечь их С ВСЕМИ их ревизиями (вместо экспорта WordPress, который игнорирует все ревизии и экспортирует только финальный пост)
3) При импорте добавить новые ревизии к существующим постам
4) Или добавить новые посты со всеми ревизиями
Я полагаю, что пока вы можете сравнивать посты в двух базах данных и быть уверенными, что они одинаковые, несмотря на разные ID, вы должны иметь возможность добавлять новые ревизии к существующим постам. Так что, возможно, точкой сравнения должен быть GUID.
Спасибо!
Ваши требования включают нестандартный процесс, так как WordPress изначально не поддерживает экспорт или импорт ревизий постов. Однако это возможно добиться с помощью пользовательских запросов к базе данных.
WordPress хранит посты и их ревизии в таблице wp_posts.
Ревизии хранятся как отдельные записи с установленным post_type в значение revision и ссылкой на оригинальный пост в столбце post_parent.
GUID или post_name могут служить ключом для сравнения между постами в разных базах данных.
Вот SQL-запрос для извлечения ваших ревизий:
SELECT p.*
FROM wp_posts p
WHERE (p.post_type="post" OR p.post_type="page") -- Включить посты/страницы
AND (p.post_date BETWEEN '2024-01-01' AND '2024-07-01') -- Настроить диапазон дат
OR (p.post_type="revision" AND p.post_parent IN (
SELECT ID FROM wp_posts
WHERE post_date BETWEEN '2024-01-01' AND '2024-07-01'
));
Ответ или решение
Для экспорта ревизий постов в WordPress необходимо учитывать, что стандартные инструменты платформы не поддерживают эту функциональность. Тем не менее, можно реализовать данный процесс с помощью пользовательских SQL-запросов, которые позволят вам извлечь все необходимые данные.
1. Структура хранения данных
WordPress хранит посты и их ревизии в таблице wp_posts
. Ревизии сохраняются как отдельные записи, где post_type
имеет значение revision
, а post_parent
ссылается на оригинальный пост. Для выполнения задачи вам необходимо сравнить посты по уникальному идентификатору, например, по GUID
или post_name
, поскольку идентификаторы могут различаться между базами данных.
2. SQL-запрос для извлечения данных
Привожу SQL-запрос, который поможет вам извлечь посты и их ревизии за указанный период:
SELECT p.*
FROM wp_posts p
WHERE (p.post_type='post' OR p.post_type='page') -- Включаем посты и страницы
AND (p.post_date BETWEEN '2024-01-01' AND '2024-07-01') -- Укажите нужный диапазон дат
OR (p.post_type='revision' AND p.post_parent IN (
SELECT ID FROM wp_posts
WHERE post_date BETWEEN '2024-01-01' AND '2024-07-01'
));
3. Импорт новых ревизий в целевую базу данных
С помощью полученных изначально данных, вы сможете импортировать ревизии. Для добавления новых ревизий к существующим постам в целевой базе данных, запрос будет выглядеть следующим образом:
- Определите все посты в целевой базе данных по GUID или post_name.
- Проверьте наличие соответствующих ревизий для этих постов.
- Если ревизии отсутствуют, выполните вставку записей с типом
revision
.
4. Использование плагинов
Для упрощения процесса также можно рассмотреть возможность использования специализированных плагинов для миграции данных, которые могут обеспечить экспорт и импорт постов с ревизиями. На данный момент существует ограниченное количество решений, поэтому выбор может зависеть от конкретных требований вашего проекта.
Заключение
Экспорт ревизий постов из одной базы данных WordPress в другую — задача, требующая нестандартного подхода. Применяя приведенные выше SQL-запросы и учитывая уникальные идентификаторы постов, вы сможете эффективно выполнить эту задачу. При необходимости, комбинация с плагинами может дополнительно упростить процесс и избежать возможных ошибок при ручном импорте.
Если у вас остались вопросы или требуется дополнительная помощь, не стесняйтесь обращаться. Реализация такого проекта может быть сложной, но с правильным подходом и инструментами — вполне осуществима.