Вопрос или проблема
У меня есть две записи в таблице wp_posts
где post_type="attachment"
. На картинке ниже показаны записи, связанные с ними в таблице wp_postmeta
.
Мне нужно изменить идентификаторы этих файлов. Я делаю следующее:
update wp_posts
set ID = ID + 10000
where ID in (3143,3144);
update wp_postmeta set post_id = post_id + 10000,
meta_id = meta_id + 100000
where post_id in (3143,3144);
Когда я это делаю, я теряю изображения! Я не вижу их в разделе “Медиа” в wp-admin
. На веб-странице они тоже не отображаются. Если я захожу по адресу: /wp-admin/upload.php?item=13143, он также не отображается. Только когда я перехожу по ссылке в поле “guid” связанной записи в wp_posts, я вижу изображение.
Что я упускаю? Что я делаю не так?
Буду признателен за любые советы.
Ваш запрос выглядит хорошо и, похоже, работает. Я провел тест в своей базе данных, и изображение осталась видимой в библиотеке медиа после изменения идентификатора. Возможно, уже существовали другие записи с этими идентификаторами.
Ответ или решение
Для изменения идентификаторов вложений в таблице wp_posts
и связанных таблицах, таких как wp_postmeta
, необходимо придерживаться строго определенной последовательности шагов, чтобы избежать потери данных или появления ошибок. Вот пошаговое руководство, которое позволит вам корректно выполнить эту задачу.
1. Резервное копирование базы данных
Прежде чем вносить изменения, крайне важно создать резервную копию вашей базы данных. Это позволит вам восстановить данные в случае возникновения каких-либо проблем.
2. Существует ли уникальность ID?
Прежде чем изменять идентификаторы, убедитесь, что новые идентификаторы не пересекаются с существующими. Вы можете выполнить следующий запрос для проверки наличия ID:
SELECT ID FROM wp_posts WHERE ID IN (3143 + 10000, 3144 + 10000);
Если в результате будут возвращены какие-либо строки, вам нужно выбрать другие уникальные значения.
3. Изменение идентификаторов в wp_posts
После проверки на уникальность, выполните обновление идентификаторов в таблице wp_posts
. Используйте следующий запрос:
UPDATE wp_posts
SET ID = ID + 10000
WHERE ID IN (3143, 3144);
4. Обновление идентификаторов в wp_postmeta
Затем обновите соответствующие идентификаторы в таблице wp_postmeta
. Обязательно обновить только post_id
. Обратите внимание, что meta_id
не следует изменять напрямую, так как это может привести к потере ссылок на данные. Вместо этого используйте такую команду:
UPDATE wp_postmeta
SET post_id = post_id + 10000
WHERE post_id IN (3143, 3144);
5. Обновление ссылок (если применимо)
Если у вас есть ссылки, которые ссылаются на старые идентификаторы вложений (например, в других таблицах), необходимо обновить и их.
6. Проверка в медиа библиотеке
Войдите в панель управления WordPress и перейдите в раздел "Медиа". Проверьте, отображаются ли ваши обновленные вложения. Если они по-прежнему не видны, возможно, проблема в кэше. Попробуйте очистить кэш.
7. Дополнительные проверки
Если вложения все еще не видны, проверьте следующее:
- Убедитесь, что вся информация о медиафайлах корректна и соответствует новым идентификаторам.
- Проверьте таблицу
wp_postmeta
, чтобы убедиться, что в ней нет неразрешенных записей или значенийpost_id
.
Заключение
Если вы следовали всем вышеуказанным шагам и вложения все еще не отображаются в разделе "Медиа", возможно, существуют проблемы с другими плагинами или темами, которые вы используете. В таком случае рекомендуется выявить конфликт, отключив плагины или переключившись на стандартную тему.
Также, если вы изменяете ID и все еще сталкиваетесь с проблемами, желательно проверить все функции, связанные с обработкой вложений, которые могут быть затронуты.