Estou usando o carregador de mídia do Wordpress para fazer upload de imagens e fiquei imaginando se existe uma maneira de fazer o upload para o meu servidor remoto em vez do meu servidor local? Exemplo: Meu blog wordpress está hospedado no Servidor A e quero usar o carregador de mídia para carregar imagens no Servidor B em vez do Servidor A.
Ambos os servidores rodam o Ubuntu 10.04 LTS com o nginx como servidor da Web e ambos suportam ftp e sftp.
Respostas:
Acabei de criar um plugin que faz isso. Não é perfeito, mas faz o seu trabalho.
Você pode encontrá-lo no meu Github: https://github.com/pontusab/wp-ftp-media-library
Então, você precisa alterar algumas coisas dentro do arquivo na linha 28:
O que este plugin faz é, ele muda o structur carregamento de / ano / mês para apenas carregar na máquina local no nosso caso Servidor A . Em seguida, ele usa o php para se conectar ao ftp via: ftp_connect . A função é acionada quando o wp_generate_attachment_metadata é executado. Em seguida, ele executa uma verificação na pasta de upload para ver se há alguma imagem ; nesse caso, ele fará o upload de todas elas no servidor ftp via ftp_put . Quando o upload for concluído, os arquivos serão removidos da máquina local usando a função desvincular .
Em seguida, o plugin altera o URL das imagens para o IP ou nome de host "público" apontado para o servidor ftp. Sugiro usar algo como static.mydomain.com ou cdn.mydomai.com. Eles precisam ser apontados para o servidor ftp (servidor B), que permite carregar as imagens do servidor ftp.
Como os outros membros dizem que você não deveria usar um servidor ftp para isso, é melhor usar um CDN real, montado por fusível ou algo como o Amazon S3.
fonte
Parece que você só quer usar uma CDN. A maneira como a maioria das CDNs funciona é que você carrega suas imagens localmente e elas são espelhadas no local da CDN. Em seguida, configure um domínio que aponte para o conteúdo da CDN e reescreva os URLs da imagem para usá-lo em vez do URL normal.
Existem vários plugins e serviços bons, embora eu só tenha experiência com o W3TC e o Cloudfront.
fonte
Você precisa entender como o WP carrega um arquivo. Uma solicitação POST envia o arquivo para o servidor onde será armazenado em uma pasta temporária. Depois disso, o WP testará o arquivo carregado, copiará no diretório de conteúdo e excluirá o arquivo temporário.
Este é um processo muito complexo. Para imagens, você pode conectar-se a 'media_upload_file' e verificar se é uma imagem. Se for uma imagem, copie-a com o WP_Filesystem para o servidor externo (use o método ftpext e forneça suas credenciais de ftp nas opções); caso contrário, deixe o WP manipular o upload
wp_handle_upload()
. No caso de copiar o arquivo para um servidor externo, é necessário fornecer o URL e assim por diante ao WP, para que o WP possa configurar os dados (por exemplo, para postagens de anexo).Este trabalho não é feito com uma mão cheia de código. Se você não é um desenvolvedor, é melhor contratar um. Ou pesquise um plugin que faça isso por você.
fonte
Você pode usar SSHFS ou FTPFS para montar um diretório no servidor remoto para o diretório de uploads. Dessa forma, você não precisará alterar nada no próprio WordPress.
A desvantagem é que todo acesso ao arquivo carregado será mais lento, dependendo da localização do servidor B.
fonte