Сделайте каталог загрузки WordPress вне корневой папки WordPress с помощью пользовательского URL.

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

Я хочу изменить директорию загрузки для 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.

  1. В директории ваших плагинов создайте директорию с названием custom_upload_dir
  2. В этой директории создайте следующий файл с названием 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 );
  1. В вашем файле wp-config.php определите константу WP_UPLOAD_DIR, используемую плагином.
  2. В админке 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

Создание плагина для кастомной директории загрузки

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

  1. В директории плагинов создайте папку с названием custom_upload_dir.
  2. Внутри этой папки создайте файл 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 );
  1. В файле wp-config.php определите константу WP_UPLOAD_DIR, указывающую на директорию загрузки:
define('WP_UPLOAD_DIR', '/path/to/project.dev/cdn');
  1. В админ панели WordPress активируйте созданный плагин.

Заключение

Заменив стандартную директорию загрузки WordPress, вы можете улучшить структуру URL вашего сайта и, возможно, даже ускорить его загрузку, если используете CDN (Content Delivery Network). Однако учитывайте, что некоторые инструменты, такие как резервные копии, могут иметь проблемы с доступом к файлам, которые находятся вне стандартного дерева каталогов WordPress. Поэтому перед тем как делать изменения, убедитесь, что у вас есть план резервного копирования и восстановления.

С помощью описанных методов вы легко сможете настраивать WordPress для своих нужд, следуя современным требованиям производительности и SEO.

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

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