Вопрос или проблема
Какая-либо функция может изменить все 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;
}
Как это работает
-
Фильтрация URL: Функция
add_filter
привязывает вашу функциюreplace_media_url
к событию, которое возвращает URL вложений. Это означает, что каждый раз, когда WordPress генерирует URL для медиафайла, ваш код будет вызван. -
Проверка URL: Функция проверяет, содержит ли URL строку
wp-content/uploads
, указывая на то, что это медиафайл. Если это так, она заменяет часть URL на указанный путь к вашим медиафайлам на CDN. -
Замена основной части URL: Далее функция заменяет основной URL сайта на URL вашего CDN.
Преимущества использования данного метода
-
Не вмешивается в ядро WordPress: Использование функций и фильтров является лучшей практикой, так как это упрощает обновления WordPress в будущем без потери ваших изменений.
-
Гибкость: Вы можете легко изменить путь и URL вашего CDN, модифицируя только переменные
$custom_url
и$path
.
Дополнительные советы
-
Кеширование: Если вы используете плагины для кэширования, такие как WP Super Cache, убедитесь, что кэширование включено. Это может помочь в уменьшении времени загрузки вашего сайта за счет более быстрого доступа к статическому контенту.
-
Тестирование: После внесения изменений, протестируйте все медиафайлы на сайте — как в административной панели, так и на фронтальной части сайта, чтобы убедиться, что все ссылки правильно перенаправляются на ваш CDN.
-
SEO Оптимизация: Использование CDN также может положительно сказаться на производительности вашего сайта, что в свою очередь может улучшить его рейтинг в поисковых системах.
Следуя этому методу, вы сможете эффективно направлять все медиафайлы вашего WordPress сайта на указанный вами CDN, что поможет улучшить скорость загрузки и общую производительность сайта.