Acabo de crear un complemento que hace esto. No es perfecto pero hace su trabajo.
Puede encontrarlo en mi Github: enlace
Entonces necesitas cambiar algunas cosas dentro del archivo en la fila 28:
/**
* Change this to match your server
* You only need to change the those with (*)
* If marked with (-) its optional
*/
$settings = array(
'host' => 'ip or hostname', // * the ftp-server hostname
'user' => 'username', // * ftp-user
'pass' => 'password', // * ftp-password
'cdn' => 'cdn.example.com', // * This have to be a pointed domain or subdomain to the root of the uploads
'path' => '/', // - ftp-path, default is root (/). Change here and add the dir on the ftp-server,
'base' => $upload_dir['basedir'] // Basedir on local
);
Lo que hace este complemento es que cambia la estructura de carga de / año / mes para que solo se cargue en la máquina local en nuestro caso 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 un revisa la carpeta de carga para ver si hay imágenes , si es así, se cargará todos ellos al servidor ftp a través de ftp_put . Cuando se complete la carga, los archivos se eliminarán de la máquina local mediante la función unlink .
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 apuntarse al servidor ftp (Servidor B), esto le permite cargar las imágenes desde el servidor ftp.
Como los otros miembros dicen que no deberías usar un servidor ftp para esto, es mejor con un CD real, montado por fusible o algo así como Amazon S3.