Изменение URL для статического контента

7 нояб. 2016 г., 13:55:53
Просмотры: 21.2K
Голосов: 3

У моего хостинга есть высокоскоростной 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 );
2
Комментарии

Похоже, предполагается, что uploads — это папка. Возможно, можно отфильтровать вывод, чтобы использовать другой URL

jgraup jgraup
7 нояб. 2016 г. 14:56:53

Спасибо, @jgraup. Ваш комментарий подтолкнул к дальнейшему исследованию, и я нашёл ответ ниже :)

Sam Sam
11 нояб. 2016 г. 10:55:11
Все ответы на вопрос 2
0

Этот ответ решил проблему.

Вам нужно добавить следующий код в файл 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.

11 нояб. 2016 г. 10:52:38
1

Самый простой способ указать WordPress использовать поддомен (или другой домен) — это определить глобальную переменную в вашем файле config.php.

define('WP_CONTENT_URL', 'http://static.yourdomain.com');

Поместите этот код в самое начало файла config, иначе он может не сработать. Это обновит URL всех ресурсов в директории wp-content.

Подробнее об этом читайте в Wordpress Codex

14 апр. 2017 г. 15:28:45
Комментарии

Это может нарушить работу некоторых плагинов (например, Yoast SEO). Если вы планируете использовать его для CDN, лучше использовать плагин кеширования, который позволяет задать URL CDN.

Max S. Max S.
17 окт. 2019 г. 17:54:24