В WordPress все медиафайлы по умолчанию сохраняются в папке wp-content/uploads. Но бывают ситуации, когда нужно изменить путь сохранения или вывода этих файлов — например, для интеграции с CDN, разделения медиа по типам или создания отдельной структуры хранения.
Что такое фильтр wp_content и как он связан с путями медиафайлов
Фильтр wp_content_url и функция content_url() отвечают за формирование URL к папке wp-content. Изменяя этот фильтр, можно изменить URL, по которому WordPress будет искать ресурсы внутри wp-content, включая медиафайлы, если они сохраняются внутри этой папки.
Кроме того, для изменения пути загрузки медиафайлов есть фильтры upload_dir, которые позволяют гибко настраивать физический путь и URL для медиа.
Зачем менять путь медиафайлов?
- Интеграция с CDN — чтобы автоматически подставлять URL CDN для медиа.
- Организация хранения — разделение загрузок по проектам, типам файлов или другим параметрам.
- Безопасность — скрыть стандартные пути, чтобы усложнить подбор атаки на медиа.
Как изменить URL папки wp-content с помощью фильтра wp_content_url
Для изменения URL папки wp-content можно использовать следующий код в файле functions.php вашей темы или в собственном плагине:
add_filter('content_url', 'wpcontent_ru_custom_content_url', 10, 3);
function wpcontent_ru_custom_content_url($url, $path, $orig_scheme) {
// Меняем URL на свой, например, на CDN
$cdn_url = 'https://cdn.wpcontent.ru/wp-content';
// Если путь начинается с wp-content, заменяем
if (strpos($url, content_url()) === 0) {
$url = str_replace(content_url(), $cdn_url, $url);
}
return $url;
}Этот фильтр заменит все ссылки, ведущие на wp-content, на указанный вами URL, например, CDN или другой домен.
Изменение физического пути и URL для загрузок с помощью фильтра upload_dir
Самый популярный способ изменить место хранения медиафайлов и URL — использовать фильтр upload_dir. Он позволяет полностью переопределить путь и URL для загружаемых файлов.
Пример кода:
add_filter('upload_dir', 'wpcontent_ru_custom_upload_dir');
function wpcontent_ru_custom_upload_dir($dirs) {
// Новая папка для загрузок внутри wp-content
$custom_subdir = '/custom-uploads';
$dirs['path'] = WP_CONTENT_DIR . $custom_subdir . $dirs['subdir'];
$dirs['url'] = content_url() . $custom_subdir . $dirs['subdir'];
// Если нужно, можно изменить baseurl и basedir
$dirs['basedir'] = WP_CONTENT_DIR . $custom_subdir;
$dirs['baseurl'] = content_url() . $custom_subdir;
return $dirs;
}В этом примере все загружаемые файлы будут сохраняться в wp-content/custom-uploads с сохранением год-месяц папок (например, 2024/06), а ссылки на них будут корректно формироваться с новым URL.
Что важно учитывать
- Папка должна существовать или иметь права на создание.
- Если меняете URL на внешний (CDN), убедитесь, что файлы туда синхронизируются.
- Изменение пути повлияет на уже загруженные файлы — для них URL останется прежним, пока не будет выполнена миграция.
Пример интеграции с CDN для медиа с помощью плагина Clearfy Pro
Плагин Clearfy Pro поддерживает автоматическую интеграцию с CDN и оптимизацию путей загрузки медиафайлов. Его можно использовать для упрощения настройки, если не хочется писать код вручную.
Особенности:
- Автоматическая замена URL на CDN в медиахранилище.
- Поддержка популярных CDN-сервисов.
- Дополнительные оптимизации для ускорения загрузки.
Полезные советы и лучшие практики при изменении путей медиа
Изменение путей — это мощный инструмент, но он требует аккуратности:
- Тестируйте на локальной среде, чтобы не сломать доступ к уже загруженным файлам.
- Обновляйте ссылки в базе данных после смены путей, если переносите файлы.
- Резервное копирование — всегда делайте перед изменениями.
- Используйте плагины для миграции и замены ссылок, например, Clearfy Pro или сторонние решения.
Как вывести медиафайл с новым путем в шаблоне
Чтобы получить URL медиафайла с учётом кастомных настроек, используйте функцию wpcontent_ru_get_custom_media_url():
function wpcontent_ru_get_custom_media_url($attachment_id) {
$url = wp_get_attachment_url($attachment_id);
// Здесь можно дополнительно обработать URL, если нужно
return $url;
}Так вы гарантируете, что URL будет соответствовать вашим фильтрам и настройкам.
Вывод
Использование фильтра wp_content_url и фильтра upload_dir — это надежные способы изменить пути и URL медиафайлов в WordPress для решения конкретных задач, будь то интеграция с CDN, оптимизация структуры или безопасность. Комбинируйте эти методы с плагинами, например, Clearfy Pro, чтобы получить максимально удобный и эффективный результат.