Ich verwende den Wordpress-Medien-Uploader zum Hochladen von Bildern und habe mich gefragt, ob es eine Möglichkeit gibt, diese auf meinen Remote-Server anstatt auf meinen lokalen Server hochzuladen. Beispiel: Mein WordPress-Blog wird auf Server A gehostet und ich möchte den Medien-Uploader verwenden, um Bilder anstelle von Server A auf Server B hochzuladen.
Beide Server führen Ubuntu 10.04 LTS mit nginx als Webserver aus und beide unterstützen ftp & sftp.
Antworten:
Ich habe gerade ein Plugin erstellt, das dies tut. Es ist nicht perfekt, aber es macht seinen Job.
Sie finden es in meinem Github: https://github.com/pontusab/wp-ftp-media-library
Sie müssen also einige Dinge in der Datei in Zeile 28 ändern:
Dieses Plugin ändert die Upload-Struktur von / Jahr / Monat so, dass sie nur auf den lokalen Computer in unserem Fall Server A hochlädt . Dann verwendet es PHP, um eine Verbindung zum FTP herzustellen über: ftp_connect . Die Funktion wird ausgelöst, wenn wp_generate_attachment_metadata ausgeführt wird. Anschließend wird im Upload-Ordner überprüft , ob Bilder vorhanden sind. In diesem Fall werden alle Bilder über ftp_put auf den FTP-Server hochgeladen . Wenn der Upload abgeschlossen ist, werden die Dateien mithilfe der Funktion zum Aufheben der Verknüpfung vom lokalen Computer entfernt .
Dann ändert das Plugin die URL der Bilder in die "öffentliche" IP oder den Hostnamen, der auf den FTP-Server verweist. Ich schlage vor, etwas wie static.mydomain.com oder cdn.mydomai.com zu verwenden. Sie müssen auf den FTP-Server (Server B) verweisen, damit Sie die Bilder vom FTP-Server laden können.
Wie die anderen Mitglieder sagen, sollten Sie dafür keinen FTP-Server verwenden, es ist besser mit einem echten CDN, der durch eine Sicherung bereitgestellt wird oder so etwas wie Amazon S3.
quelle
Es klingt fast so, als ob Sie nur ein CDN verwenden möchten. Die meisten CDNs funktionieren so, dass Sie Ihre Bilder lokal laden und sie am CDN-Speicherort gespiegelt werden. Anschließend richten Sie eine Domain ein, die auf den CDN-Inhalt verweist, und schreiben Ihre Bild-URLs neu, um diese Domain anstelle Ihrer normalen URL zu verwenden.
Es gibt mehrere gute Plugins und Dienste, obwohl ich nur Erfahrung mit W3TC und Cloudfront habe.
quelle
Sie müssen verstehen, wie WP eine Datei hochlädt. Eine POST-Anforderung sendet die Datei an den Server, wo sie in einem temporären Ordner gespeichert wird. Danach testet WP die hochgeladene Datei, kopiert sie in das Inhaltsverzeichnis und löscht die temporäre Datei.
Dies ist ein sehr komplexer Prozess. Für Bilder können Sie sich in 'media_upload_file' einbinden und dann prüfen, ob es sich um ein Bild handelt. Wenn es sich um ein Image handelt, kopieren Sie es mit WP_Filesystem auf den externen Server (verwenden Sie die Methode ftpext und geben Sie Ihre FTP-Anmeldeinformationen innerhalb der Optionen an). Andernfalls kann WP den Upload mit ausführen
wp_handle_upload()
. Wenn Sie die Datei auf einen externen Server kopieren, müssen Sie die URL usw. an WP weitergeben, damit WP die Daten einrichten kann (z. B. für Anhangspostings).Dieser Job wird nicht mit einer Hand voll Code erledigt. Wenn Sie kein Entwickler sind, sollten Sie einen einstellen. Oder suchen Sie nach einem Plugin, das dies für Sie erledigt.
quelle
Sie können SSHFS oder FTPFS verwenden , um ein Verzeichnis auf dem Remote-Server für Ihr Upload-Verzeichnis bereitzustellen. Auf diese Weise müssen Sie in WordPress selbst nichts ändern.
Der Nachteil ist, dass jeder Zugriff auf die hochgeladene Datei langsamer ist, je nachdem, wo sich Server B befindet.
quelle