Назад к блогу

Проксирование медиафайлов в локальной среде разработки WordPress с помощью DDEV

2023-07-043 минуты чтения

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

Загрузка всех медиафайлов в вашу локальную среду может быть не лучшим решением, особенно если на производственном сайте есть большая медиатека. Вместо этого вы можете настроить свою локальную среду разработки для проксирования медиазапросов к производственному серверу. Для локальной разработки я использую DDEV, инструмент с открытым исходным кодом, который позволяет очень просто запускать локальные среды разработки PHP за считанные минуты. В этом посте я поделюсь полезным для меня решением для проксирования медиафайлов в локальной среде DDEV без использования плагина.

Проблема

Работая с WordPress локально с помощью DDEV, мне нужен был способ отображать медиафайлы, не загружая их фактически в мою локальную среду. Моя цель состояла в том, чтобы WordPress загружал эти файлы с производственного сервера при каждом запросе.

Решение

Мы можем добиться этого, добавив пользовательские функции в файл functions.php вашей темы WordPress. Эти функции изменят URL-адреса для вложений и миниатюр, чтобы они указывали на производственный сервер.

Вот фрагмент кода, который вы можете добавить в свой файл functions.php:

if ($_SERVER['HTTP_HOST'] == 'your-local-ddev-url') {

    function replace_domain($url) {
        return str_replace('https://your-local-ddev-url', 'https://your-production-url', $url);
    }

    function rewrite_attachment_url($url) {
        return replace_domain($url);
    }
    add_filter('wp_get_attachment_url', 'rewrite_attachment_url');

    function rewrite_thumbnail_attributes($attr, $attachment, $size) {
        if (isset($attr['srcset'])) {
            $attr['srcset'] = replace_domain($attr['srcset']);
        }
        return $attr;
    }
    add_filter('wp_get_attachment_image_attributes', 'rewrite_thumbnail_attributes', 10, 3);

}

Замените your-local-ddev-url на URL вашего локального DDEV-окружения, а your-production-url — на URL вашего производственного сервера.

Как это работает

  • Функция replace_domain принимает URL в качестве входных данных и заменяет локальный домен на производственный.
  • Функция rewrite_attachment_url использует фильтр wp_get_attachment_url для изменения URL-адресов файлов вложений.
  • Функция rewrite_thumbnail_attributes изменяет атрибут srcset для миниатюр изображений. Это полезно, когда ваша тема использует адаптивные изображения разных размеров.

DDEV: отличный инструмент для локальной разработки

DDEV — это инструмент с открытым исходным кодом, который помогает быстро настраивать локальные среды разработки PHP с помощью Docker. Он невероятно прост в использовании и может значительно ускорить ваш рабочий процесс разработки. Используя DDEV для локальной разработки WordPress, вы можете гарантировать, что ваша среда соответствует вашему производственному серверу, что крайне важно для избежания проблемы «у меня на машине работает».

Если вы новичок в DDEV и хотите узнать, как настроить его для WordPress и Drupal, у меня есть руководство, которое проведет вас через процесс настройки локального сайта с помощью DDEV. Ознакомьтесь с моим предыдущим постом: Как настроить локальный сайт WordPress и Drupal с помощью DDEV.

Заключение

Проксируя медиафайлы с производственного сервера, вы можете сэкономить место и время в своей локальной среде разработки. Это решение особенно полезно при использовании DDEV для больших сайтов WordPress с обширными медиатеками. Всегда помните о нагрузке, которую это может добавить на производственный сервер, и убедитесь, что ваша производственная среда может справиться с дополнительным трафиком. Удачного кодирования!