Вопрос или проблема
Я хочу изменить директорию загрузки для WordPress с project.dev/wp-content/uploads
на cdn.project.dev
Где поддомен cdn имеет DocumentRoot:
HostPath/project.dev/cdn
, в то время как WordPress находится в HostPath/project.dev/public_html
Любая помощь будет очень appreciated.
Если вы хотите только иметь URL в формате “cdn”, то самым простым решением, не требующим программирования, будет сделать HostPath/project.dev/cdn
символьной ссылкой на project.dev/wp-content/uploads. Таким образом, для системы оба пути будут по существу одинаковыми. Это должно быть легко сделать, если вы полностью контролируете сервер и/или имеете доступ по SSH, или может потребоваться помощь вашего хостинга, если у вас нет такого доступа.
Еще один вариант, если у вас есть контроль над конфигурацией веб-сервера, это сопоставить “корневую директорию” cdn.project.dev с директорией dev/wp-content/uploads
.
Вынос загруженных файлов за пределы дерева директорий wordpress, как буквально спрашивает вопрос, не является хорошей идеей, так как это может разрушить все виды сторонних инструментов, таких как утилиты резервного копирования.
Вы можете создать очень простой плагин для удовлетворения ваших потребностей. Вот один, основанный на ныне несуществующем directory-control
плагине, ранее доступном по адресу https://github.com/johnbillion/directory-control.
- В директории ваших плагинов создайте директорию с названием
custom_upload_dir
- В этой директории создайте следующий файл с названием
custom_upload_dir.php
<?php
/*
Имя плагина: Пользовательская директория загрузки
URI автора: https://wordpress.stackexchange.com/a/253797/111682
*/
function custom_upload_dir_impl( $uploads ) {
if ( defined( 'WP_UPLOAD_DIR' ) ) {
$uploads['path'] = str_replace( WP_CONTENT_DIR . '/uploads', WP_UPLOAD_DIR, $uploads['path'] );
$uploads['basedir'] = str_replace( WP_CONTENT_DIR . '/uploads', WP_UPLOAD_DIR, $uploads['basedir'] );
}
return $uploads;
}
add_filter( 'upload_dir', 'custom_upload_dir_impl', 1 );
- В вашем файле
wp-config.php
определите константуWP_UPLOAD_DIR
, используемую плагином. - В админке WordPress активируйте плагин
.
Ответ или решение
Изменение директории загрузки WordPress с пользовательским URL
Введение
Вопрос изменения директории загрузки в WordPress на уровне пользователя является актуальным для многих администраторов сайтов и разработчиков. Это позволяет оптимизировать хостинг ресурсов, улучшая структуру URL, что, в свою очередь, может негативно сказаться на производительности и SEO-оптимизации вашего сайта. В данной статье мы детально рассмотрим, как изменить директорию загрузки WordPress с project.dev/wp-content/uploads
на cdn.project.dev
.
Подходы к реализации
Существует несколько подходов к решению данной задачи, которые не требуют сложной настройки и программирования, и мы их обсудим ниже.
1. Создание символической ссылки
Наиболее простой и быстрый способ — создание символической ссылки на вашем сервере. Вам будет необходимо:
- Иметь доступ к серверу через SSH (или попросить вашего хостинг-провайдера сделать это за вас).
- Выполнить следующую команду в терминале, находясь в корневом каталоге вашего сайта:
ln -s /path/to/project.dev/wp-content/uploads /path/to/project.dev/cdn
Это позволит системе воспринимать cdn.project.dev
как директорию загрузки, и загруженные файлы будут доступны по этому адресу.
2. Настройка DocumentRoot
Если у вас есть доступ к конфигурации вашего веб-сервера (например, Apache или Nginx), вы можете настроить DocumentRoot
для subdomain cdn.project.dev
так, чтобы он указывал на директорию project.dev/wp-content/uploads
. Пример конфигурации для Apache может выглядеть следующим образом:
<VirtualHost *:80>
ServerName cdn.project.dev
DocumentRoot /path/to/project.dev/wp-content/uploads
</VirtualHost>
После изменения конфигурации не забудьте перезапустить веб-сервер:
sudo service apache2 restart
Создание плагина для кастомной директории загрузки
Если вы предпочитаете более программный подход, можно создать простой плагин, который будет менять путь загрузки. Вот пример, как это сделать:
- В директории плагинов создайте папку с названием
custom_upload_dir
. - Внутри этой папки создайте файл
custom_upload_dir.php
, содержащий следующий код:
<?php
/*
Plugin Name: Custom Upload Directory
Author URI: https://wordpress.stackexchange.com/a/253797/111682
*/
function custom_upload_dir_impl( $uploads ) {
if ( defined( 'WP_UPLOAD_DIR' ) ) {
$uploads['path'] = str_replace( WP_CONTENT_DIR . '/uploads', WP_UPLOAD_DIR, $uploads['path'] );
$uploads['basedir'] = str_replace( WP_CONTENT_DIR . '/uploads', WP_UPLOAD_DIR, $uploads['basedir'] );
}
return $uploads;
}
add_filter( 'upload_dir', 'custom_upload_dir_impl', 1 );
- В файле
wp-config.php
определите константуWP_UPLOAD_DIR
, указывающую на директорию загрузки:
define('WP_UPLOAD_DIR', '/path/to/project.dev/cdn');
- В админ панели WordPress активируйте созданный плагин.
Заключение
Заменив стандартную директорию загрузки WordPress, вы можете улучшить структуру URL вашего сайта и, возможно, даже ускорить его загрузку, если используете CDN (Content Delivery Network). Однако учитывайте, что некоторые инструменты, такие как резервные копии, могут иметь проблемы с доступом к файлам, которые находятся вне стандартного дерева каталогов WordPress. Поэтому перед тем как делать изменения, убедитесь, что у вас есть план резервного копирования и восстановления.
С помощью описанных методов вы легко сможете настраивать WordPress для своих нужд, следуя современным требованиям производительности и SEO.