J'utilise Wordpress Media Uploader pour télécharger des images et je me demandais s'il y avait un moyen de le télécharger sur mon serveur distant au lieu de mon serveur local? Exemple: Mon blog wordpress est hébergé sur le serveur A et je veux utiliser le téléchargeur de médias pour télécharger des images sur le serveur B au lieu du serveur A.
Les deux serveurs exécutent Ubuntu 10.04 LTS avec nginx comme serveur Web et prennent tous les deux en charge ftp et sftp.
Réponses:
Je viens de construire un plugin qui fait ça. Ce n'est pas parfait mais ça fait son boulot.
Vous pouvez le trouver dans mon Github: https://github.com/pontusab/wp-ftp-media-library
Vous devez donc modifier certaines choses dans le fichier sur la ligne 28:
Qu'est - ce que ce plugin fait est, il change la structur de téléchargement de / année / mois seulement télécharger sur la machine locale dans notre cas le serveur A . Ensuite, il utilise php pour se connecter au ftp via: ftp_connect . La fonction se déclenche lorsque wp_generate_attachment_metadata s'exécute. Il exécute ensuite une vérification dans le dossier de téléchargement pour voir s'il y a des images , le cas échéant, il les téléchargera toutes sur le serveur ftp via ftp_put . Une fois le téléchargement terminé, les fichiers seront supprimés de la machine locale à l'aide de la fonction de dissociation .
Ensuite, le plugin change l'url des images en ip "public" ou nom d'hôte pointé vers le serveur ftp. Je suggère d'utiliser quelque chose comme static.mydomain.com ou cdn.mydomai.com. Ils doivent être dirigés vers le serveur ftp (serveur B), ce qui vous permet de charger les images depuis le serveur ftp.
Comme les autres membres disent que vous ne devriez pas utiliser un serveur ftp pour cela, c'est mieux avec un vrai cdn, monté par fusible ou quelque chose comme Amazon S3.
la source
Il semble que vous souhaitiez simplement utiliser un CDN. La plupart des CDN fonctionnent: vous chargez vos images localement et elles sont reflétées à l'emplacement CDN. Ensuite, vous configurez un domaine qui pointe vers le contenu CDN et réécrivez vos URL d'image pour utiliser ce domaine au lieu de votre URL normale.
Il existe plusieurs bons plugins et services, même si je n'ai qu'une expérience avec le W3TC et Cloudfront.
la source
Vous devez comprendre comment WP télécharge un fichier. Une demande POST envoie le fichier au serveur où il sera stocké dans un dossier temporaire. Après cela, WP testera le fichier téléchargé, le copiera dans le répertoire de contenu et supprimera le fichier temporaire.
Il s'agit d'un processus très complexe. Pour les images, vous pouvez vous connecter à «media_upload_file», puis vérifier s'il s'agit d'une image. S'il s'agit d'une image, copiez-la avec WP_Filesystem sur le serveur externe (utilisez la méthode ftpext et fournissez vos informations d'identification ftp dans les options), sinon laissez WP gérer le téléchargement avec
wp_handle_upload()
. En cas de copie du fichier sur un serveur externe, vous devez fournir l'URL et ainsi de suite à WP, afin que WP puisse configurer les données (par exemple pour les articles joints).Ce travail ne se fait pas avec une main pleine de code. Si vous n'êtes pas développeur, mieux vaut en louer un. Ou recherchez un plugin qui le fera pour vous.
la source
Vous pouvez utiliser SSHFS ou FTPFS pour monter un répertoire sur le serveur distant pour votre répertoire de téléchargements. De cette façon, vous n'aurez pas besoin de changer quoi que ce soit dans WordPress lui-même.
L'inconvénient est que chaque accès au fichier téléchargé sera plus lent selon l'endroit où réside le serveur B.
la source