Как использовать фильтр wp_content для изменения пути медиафайлов в WordPress

В 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, чтобы получить максимально удобный и эффективный результат.

Как изменить пути к медиафайлам в WordPress без потери функциональности
25.02.2026
Как использовать WP Hooks для автоматического изменения атрибутов товара WooCommerce
12.05.2026
Как использовать hooks в WordPress для расширения функциональности
09.11.2025
Как создать автоматическое удаление неиспользуемых постов в WordPress
02.01.2026
Как использовать REST API в WordPress для создания плагинов
16.11.2025