Вопрос или проблема
Во время переноса сайта файл wp-config.php был заменен (хостингом) для подключения к новой базе данных, и директива из моей старой версии (которая указывала корневую папку для всех изображений вместо стандартной папки ‘uploads’ в WordPress) не попала в новый файл wp-config.php.
К тому времени, когда я это заметил, мы уже добавили много контента, и изображения были в папке /uploads.
Я скопировал все изображения из /wp-content/uploads в /images, но мне нужен SQL-запрос, чтобы просмотреть весь контент и найти и заменить любые URL-адреса изображений, которые указывают на папку /wp-content/uploads.
Я каждый день становлюсь более опытным в PHP, но все еще слаб в SQL, надеюсь, кто-то сможет мне помочь – я не против временно установить плагин для поиска и замены, но кажется, что это должно быть просто сделать без плагина. У меня есть доступ к phpMyAdmin, и я всегда очень осторожен при его использовании, всегда резервируя мою базу данных перед изменениями.
Если у вас нет установленного WPCLI, но у вас есть доступ к командной строке или через PHPMyAdmin, выполните:
UPDATE wp_posts SET post_content = REPLACE(post_content,'<старый URL>','<новый URL>');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'<старый URL>','<новый URL>');
Ответ или решение
Абсолютно понятная и распространенная ситуация — вы столкнулись с проблемой обновления ссылок на изображения в базе данных после изменения конфигурации сайта. Проблема здесь заключается в том, что изначально вы настроили свою конфигурацию WordPress, чтобы изображения сохранялись в другой директории, нежели стандартная "uploads". Однако после смены конфигурации сервера и изменения файла wp-config.php, что-то пошло не так, и все новые изображения начали сохраняться в директории по умолчанию — "wp-content/uploads". Теперь вы хотите обновить содержание базы данных и заменить старые пути к изображениям на новые, которые указывают на нужную директорию.
Теория:
WordPress хранит содержимое ваших постов и связанные с ними метаданные в ряде таблиц MySQL. Основные таблицы, которые нас интересуют для задания, это wp_posts
и wp_postmeta
. wp_posts
— это таблица, где непосредственно хранится текст статей, а wp_postmeta
— это таблица метаданных, где могут находиться дополнительные данные о постах, включая пути к файлам изображений.
Пример:
Прежде чем предложить конкретный SQL-запрос, важно понять, что в большинстве случаев пути к изображениям встроены в HTML-код самого содержимого поста. К примеру, если ваше изображение находится в HTML-коде вашего поста, вы увидите строки вида:
<img src="https://example.com/wp-content/uploads/your-image.jpg" alt="Описание изображения">
Если путь к изображению изменился, необходимо обновить все вхождения старого URL (в этом случае, "https://example.com/wp-content/uploads/") на новый (например, "https://example.com/images/").
Примеры SQL-запросов, которые помогут вам выполнить эту задачу, были частично приведены вами, но вот более точный их вариант с учетом вашего контекста:
- Обновление содержимого постов:
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'https://example.com/wp-content/uploads/', 'https://example.com/images/');
- Обновление метаданных, где могут быть сохранены различные пути к медиафайлам:
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, 'https://example.com/wp-content/uploads/', 'https://example.com/images/');
Применение:
Воспользовавшись этими запросами, вы сможете изменить все ссылки на изображения в базе данных без необходимости использования плагинов. Однако есть несколько важных нюансов, которые следует помнить:
-
Резервное копирование: Всегда перед началом внесения изменений в базу данных создавайте резервную копию. Это обеспечит вас дополнительным уровнем безопасности в случае, если что-то пойдет не так.
-
Состояние других плагинов: В WordPress много различных плагинов, которые могут хранить пути к файлам изображений по-разному. Проверьте, могут ли другие плагины быть затронуты этими изменениями.
-
Тестирование: После выполнения этих запросов проверьте несколько страниц вашего сайта, чтобы убедиться, что изображения отображаются правильно и что нет проблем с загрузкой.
-
Различные домены: Если ваш сайт использует несколько доменов или вы перемещаете его на новый домен, вы также должны учитывать это в вашем запросе, чтобы изменить и соответствующие доменные части ссылок внутри HTML-кода.
Теперь, обладая этими знаниями и инструментами, вы можете с уверенностью приступить к исправлению своего сайта, убедившись, что все изображения загружаются из правильной директории. Надеюсь, эта информация оказалась полезной, и ваши задачи будут успешно выполнены!