Я использую WordPress Media Uploader для загрузки изображений, и мне было интересно, есть ли способ, чтобы загрузить его на мой удаленный сервер вместо моего локального сервера? Пример: мой блог WordPress размещен на сервере A, и я хочу использовать средство загрузки мультимедиа для загрузки изображений на сервер B вместо сервера A.
Оба сервера работают под управлением Ubuntu 10.04 LTS с nginx в качестве веб-сервера, и оба поддерживают ftp & sftp.
Ответы:
Я только что создал плагин, который делает это. Это не идеально, но оно делает свою работу.
Вы можете найти его в моем Github: https://github.com/pontusab/wp-ftp-media-library
Поэтому вам нужно изменить некоторые вещи в файле в строке 28:
Что этот плагин делает, он изменяет Структуры загрузки с / года / месяц для загрузки только на локальном компьютере в нашем случае сервер A . Затем он использует php для подключения к ftp через: ftp_connect . Функция запускается при запуске wp_generate_attachment_metadata. Затем он запускает проверку в папке загрузки, чтобы увидеть, есть ли какие-либо изображения , и если это так, он загрузит их все на ftp-сервер через ftp_put . Когда загрузка будет завершена, файлы будут удалены с локального компьютера с помощью функции unlink .
Затем плагин изменяет URL изображений на «общедоступный» ip или имя хоста, указывающее на ftp-сервер. Я предлагаю использовать что-то вроде static.mydomain.com или cdn.mydomai.com. Их нужно указать на ftp-сервер (сервер B), это позволяет загружать образы с ftp-сервера.
Как говорят другие участники, вы должны использовать для этого ftp-сервер, лучше с настоящим cdn, монтируемым предохранителем или чем-то вроде Amazon S3.
источник
Похоже, вы просто хотите использовать CDN. Большинство CDN работают так, как будто вы загружаете свои изображения локально, а они отражаются в местоположении CDN. Затем вы настраиваете домен, который указывает на содержимое CDN, и переписываете URL-адреса своего изображения, чтобы использовать этот домен вместо обычного URL-адреса.
Есть несколько хороших плагинов и сервисов, хотя я имею опыт работы только с W3TC и Cloudfront.
источник
Вы должны понимать, как WP загружает файл. Запрос POST отправляет файл на сервер, где он будет храниться во временной папке. После этого WP проверит загруженный файл, скопирует его в каталог содержимого и удалит временный файл.
Это очень сложный процесс. Для изображений вы можете подключиться к 'media_upload_file', а затем проверить, является ли это изображение. Если это изображение, скопируйте его с WP_Filesystem на внешний сервер (используйте метод ftpext и укажите свои параметры ftp в опциях), иначе позвольте WP обработать загрузку с помощью
wp_handle_upload()
. В случае копирования файла на внешний сервер, вы должны предоставить URL и т. Д. WP, чтобы WP мог настроить данные (например, для сообщений вложения).Эта работа не сделана с рукой, полной кода. Если вы не разработчик, лучше нанять его. Или найдите плагин, который сделает это за вас.
источник
Вы можете использовать SSHFS или FTPFS смонтировать каталог на удаленном сервере для директории загрузок. Таким образом, вам не нужно ничего менять в самом WordPress.
Недостатком является то, что каждый доступ к загруженному файлу будет медленнее в зависимости от того, где находится сервер B.
источник