Как я могу изменить все URL медиафайлов WordPress на пользовательский URL CDN?

Вопрос или проблема

Какая-либо функция может изменить все URL-адреса изображений на CDN вместо модификации media.php в папке wp-includes?

Я сделал это, используя wp super cache. Одна вещь, которая меня запутала, это то, что вы должны включить кэширование, даже если все, что вам нужно, это перезапись CDN.

Я посмотрел на несколько других плагинов CDN/перезаписи, но ничего не сработало.

Вы можете разместить это в вашем functions.php файле:

add_filter('wp_get_attachment_url', 'replace_media_url');
function replace_media_url($url) {
    $custom_url="https://mybucket.nyc3.cdn.digitaloceanspaces.com";
    $path="uploads";// путь в CDN
    
    // Проверьте, является ли URL адресом медиа
    if (strpos($url, 'wp-content/uploads') !== false) {
        // Замените медиа URL на новый
        $url = str_replace('wp-content/uploads', $path, $url);
        $url = str_replace(site_url(), $custom_url, $url);
    }
    return $url;
}

Каждый раз, когда к вашему медиа-ресурсу обращаются, WordPress будет возвращать URL-адрес CDN вместо этого (даже в админ-панели).

Ответ или решение

Для того чтобы изменить все URL медиафайлов WordPress на пользовательские URL CDN, можно использовать подход с фильтрацией. Это позволит вам избежать редактирования системных файлов, таких как media.php, что является важным аспектом для поддержания целостности и обновляемости вашего сайта.

Решение

Код ниже позволяет перенаправлять URL медиафайлов на ваш CDN, добавляя его в файл functions.php вашей темы.

add_filter('wp_get_attachment_url', 'replace_media_url');
function replace_media_url($url) {
    $custom_url = "https://mybucket.nyc3.cdn.digitaloceanspaces.com"; // ваш URL CDN
    $path = "uploads"; // путь в CDN

    // Проверяем, является ли URL медийным
    if (strpos($url, 'wp-content/uploads') !== false) {
        // Заменяем медиа URL на пользовательский
        $url = str_replace('wp-content/uploads', $path, $url);
        $url = str_replace(site_url(), $custom_url, $url);
    }
    return $url;
}

Как это работает

  1. Фильтрация URL: Функция add_filter привязывает вашу функцию replace_media_url к событию, которое возвращает URL вложений. Это означает, что каждый раз, когда WordPress генерирует URL для медиафайла, ваш код будет вызван.

  2. Проверка URL: Функция проверяет, содержит ли URL строку wp-content/uploads, указывая на то, что это медиафайл. Если это так, она заменяет часть URL на указанный путь к вашим медиафайлам на CDN.

  3. Замена основной части URL: Далее функция заменяет основной URL сайта на URL вашего CDN.

Преимущества использования данного метода

  • Не вмешивается в ядро WordPress: Использование функций и фильтров является лучшей практикой, так как это упрощает обновления WordPress в будущем без потери ваших изменений.

  • Гибкость: Вы можете легко изменить путь и URL вашего CDN, модифицируя только переменные $custom_url и $path.

Дополнительные советы

  • Кеширование: Если вы используете плагины для кэширования, такие как WP Super Cache, убедитесь, что кэширование включено. Это может помочь в уменьшении времени загрузки вашего сайта за счет более быстрого доступа к статическому контенту.

  • Тестирование: После внесения изменений, протестируйте все медиафайлы на сайте — как в административной панели, так и на фронтальной части сайта, чтобы убедиться, что все ссылки правильно перенаправляются на ваш CDN.

  • SEO Оптимизация: Использование CDN также может положительно сказаться на производительности вашего сайта, что в свою очередь может улучшить его рейтинг в поисковых системах.

Следуя этому методу, вы сможете эффективно направлять все медиафайлы вашего WordPress сайта на указанный вами CDN, что поможет улучшить скорость загрузки и общую производительность сайта.

Оцените материал
Добавить комментарий

Капча загружается...