Изменение URL для статического контента
У моего хостинга есть высокоскоростной NGINX кластер.
Я хочу загружать мои CSS, JS и медиафайлы с этого кластера. Я следовал этим шагам и добавил новый статический домен через DNS.
Новые DNS настройки успешно распространились, и я могу получить доступ к моим статическим файлам следующим образом: http://static.example.com/wp-content/themes/mytheme/style.css.
Для начала я хотел бы изменить URL загрузки медиафайлов. Я попробовал добавить следующий фрагмент кода в wp-config.php
перед require_once(ABSPATH.'wp-settings.php');
/** Путь к NGINX кластеру */
define( 'UPLOADS', ''.'http://static.example.com/wp-content/uploads' );
При сохранении вышеуказанного фрагмента в wp-config.php
и обновлении сайта, мои медиафайлы (изображения) загружаются по следующему URL:
http://www.example.com/http://static.example.com/wp-content/uploads/2016/11/image-name.jpg
Как видите, корневой URL загружается перед статическим URL. Какой правильный способ установить новый путь загрузки? Должен ли я также выполнить поиск и замену для предыдущих загрузок?
Я также полагаю, что нужно изменить пути к JS и CSS в functions.php
следующим образом?:
// До изменения
wp_enqueue_script( 'script', get_template_directory_uri() . '/js/script.js', array(), '20161025', false );
// После изменения
wp_enqueue_script('script', 'http://static.example.com/wp-content/themes/mytheme/js/script.js', array(), '20161025', false );

Этот ответ решил проблему.
Вам нужно добавить следующий код в файл functions.php
.
/**
* Настраиваемый URL для загрузки медиафайлов
* @link https://wordpress.stackexchange.com/questions/77960/wordpress-3-5-setting-custom-full-url-path-to-files-in-the-media-library
*/
add_filter( 'pre_option_upload_url_path', 'upload_url' );
function upload_url() {
return 'http://static.yourdomain.com/wp-content/uploads';
}
Нет необходимости добавлять оригинальный код в файл wp-config.php
.

Самый простой способ указать WordPress использовать поддомен (или другой домен) — это определить глобальную переменную в вашем файле config.php.
define('WP_CONTENT_URL', 'http://static.yourdomain.com');
Поместите этот код в самое начало файла config, иначе он может не сработать. Это обновит URL всех ресурсов в директории wp-content.
Подробнее об этом читайте в Wordpress Codex
