Estoy usando el cargador de medios de Wordpress para cargar imágenes y me preguntaba si hay una manera de hacerlo cargar en mi servidor remoto en lugar de en mi servidor local. Ejemplo: Mi blog de WordPress está alojado en el Servidor A y quiero usar el cargador de medios para cargar imágenes en el Servidor B en lugar del Servidor A.
Ambos servidores ejecutan Ubuntu 10.04 LTS con nginx como servidor web y ambos admiten ftp y sftp.
Respuestas:
Acabo de construir un complemento que hace esto. No es perfecto pero hace su trabajo.
Puedes encontrarlo en mi Github: https://github.com/pontusab/wp-ftp-media-library
Por lo tanto, debe cambiar algunas cosas dentro del archivo en la fila 28:
Lo que hace este plugin es, cambia la estructuración de carga / año / mes para que solo suba en la máquina local en nuestro caso el servidor A . Luego usa php para conectarse al ftp a través de: ftp_connect . La función se activa cuando se ejecuta wp_generate_attachment_metadata. Luego ejecuta una comprobación en la carpeta de carga para ver si hay imágenes , de ser así, las cargará todas al servidor ftp a través de ftp_put . Cuando se complete la carga, los archivos se eliminarán de la máquina local utilizando la función desvincular .
Luego, el complemento cambia la url de las imágenes a la IP "pública" o al nombre de host que apunta al servidor ftp. Sugiero usar algo como static.mydomain.com o cdn.mydomai.com. Deben apuntar al servidor ftp (Servidor B), esto le permite cargar las imágenes desde el servidor ftp.
Como los otros miembros dicen que debe usar un servidor ftp para esto, es mejor con un cdn real, montado con fusible o algo así como Amazon S3.
fuente
Casi parece que solo quieres usar un CDN. La forma en que funcionan la mayoría de las CDN es que carga sus imágenes localmente, y se reflejan en la ubicación de la CDN. Luego configura un dominio que apunta al contenido de CDN y reescribe las URL de sus imágenes para usar ese dominio en lugar de su URL normal.
Hay varios buenos complementos y servicios, aunque solo tengo experiencia con W3TC y Cloudfront.
fuente
Tienes que entender cómo WP sube un archivo. Una solicitud POST envía el archivo al servidor donde se almacenará en una carpeta temporal. Después de eso, WP probará el archivo cargado, lo copiará en el directorio de contenido y eliminará el archivo temporal.
Este es un proceso muy complejo. Para las imágenes, puede conectarlo a 'media_upload_file' y luego verificar si es una imagen. Si es una imagen, cópiela con WP_Filesystem en el servidor externo (use el método ftpext y proporcione sus credenciales ftp dentro de las opciones), de lo contrario deje que WP se encargue de la carga
wp_handle_upload()
. En caso de copiar el archivo a un servidor externo, debe proporcionar la URL y así sucesivamente a WP, para que WP pueda configurar los datos (por ejemplo, para publicaciones adjuntas).Este trabajo no se hace con una mano llena de código. Si no eres desarrollador, mejor contrata uno. O busque un complemento que lo haga por usted.
fuente
Puede usar SSHFS o FTPFS para montar un directorio en el servidor remoto para su directorio de cargas. De esta manera, no necesitará cambiar nada en WordPress.
El inconveniente es que cada acceso al archivo cargado será más lento dependiendo de dónde resida el servidor B.
fuente