In unserem 14. Adventskalender-Beitrag gibt Inpsyder Cristiano einen Überblick darüber, wie man Cloud-Speicher in WordPress Projekte integrieren kann.


Normalerweise ist die grundlegende Handhabung von WordPress Uploads ein Kinderspiel: Installiere WordPress und du bist fertig. Es gibt grundlegende Einstellungen, die du konfigurieren kannst. Dies sind z.B. die Struktur der Upload-Verzeichnisse, Thumbnail-Größen oder welche Mime-Typen hochgeladen werden können.. Aber du kannst auch an die Standardeinstellungen übernehmen.

Dies funktioniert gut, wenn du WordPress von einem einzelnen Server aus bedienst. Aber wenn deine Website viel Traffic bewältigen muss, muss sie höchstwahrscheinlich auf einem Cluster von Servern hinter einem Load Balancer laufen. Das bedeutet, dass dein Upload-Verzeichnis von allen Servern im Cluster freigegeben werden muss. Es bedeutet auch, dass du entweder ein Hosting hast, welches dies für dich erledigt oder du musst das selbst erledigen. Hierfür benötigst du einen zentralen Medienserver, eine Datensynchronisation zwischen Servern oder höchstwahrscheinlich Cloud-Speicher.

Mit diesem Artikel gebe ich einen Überblick darüber, warum und wie du Cloud-Speicher in WordPress Projekte integrieren kannst.

Warum Cloud-Speicher?

Die Verwendung eines zentralisierten Medienservers wäre eine Möglichkeit, aber das bedeutet, dass deine Infrastruktur zusätzlich komplex wird. Darüber hinaus erfordert es Netzwerk-Know-how und vielleicht eine Änderung der Art und Weise, wie WordPress seine Uploads abwickelt.

Die Datensynchronisation zwischen Servern könnte möglicherweise auch funktionieren. Aber wieder einmal erhöhst du die Komplexität deiner Infrastruktur. Infolgedessen sind Dateien möglicherweise nicht auf allen Servern sofort verfügbar und es können alle Arten von Synchronisierungsproblemen auftreten. So würdest du Zeit verschwenden, um diese Probleme aufzuspüren, zu debuggen und zu beheben.

Mit Cloud Storage interagierst du mit einer einzigen HTTP-API und entlädst alle Medienanforderungen von deinen Servern. Auf diese Weise überträgst du die technische Verantwortung auf den Drittanbieter, einschließlich Verfügbarkeit, Backups, Versionierung (in der Regel optional) und Zugriffskontrolle. Sie werden auch sofort einsatzbereit sein, ohne dass du etwas eigenes entwickeln musst, um dich durch diese Dateien zu bewegen.

Die meisten der offensichtlichen Cloud-Speicheranbieter haben auch Integrationen mit anderen Diensten und Produkten, die sie anbieten. Die Möglichkeiten enden also nicht mit dem Hochladen und Bereitstellen von Dateien.

Cloud-Speicher in WordPress integrieren

Was benötigst du also, um deine WordPress-Bibliothek in die Cloud zu verschieben? Zuerst musst du natürlich einen Cloud-Speicheranbieter auswählen, der über eine API verfügt, die zumindest die grundlegenden CRUD-Operationen ermöglicht. Dann musst du die Struktur des Upload-Verzeichnisses auswählen. Anschließend musst du entscheiden, welche Metadaten du speichern musst, falls vorhanden. Und schließlich musst du dich an den richtigen Stellen in WordPress einhaken.

Wenn du ein Projekt migrierst, das bereits Uploads enthält, musst du auch zuerst alle diese Uploads auf deinen Cloud-Storage kopieren und sicherstellen, dass die richtige Barrierefreiheit für alle diese Projekte eingestellt ist. Für WordPress Uploads bedeutet das in der Regel öffentliche Zugänglichkeit für alles.

Flysystem und seine Adapter

Es gibt ein großartiges PHP-Projekt namens Flysystem von The League of Extraordinary Packages. Es ermöglicht eine einfache Integration mit vielen der wichtigsten Cloud-Speicheranbieter über Adapter. Wenn du nicht alles selbst erledigen willst, wäre die Verwendung dieser Bibliothek ein guter und schneller Start.

WordPress Dateien zum Cloud-Speicher hochladen

Der erste Schritt in die WordPress-Integration wäre der Anschluss an den wp_update_attachment_metadata Filter. Auf diese Weise stellst du sicher, dass jeder einzelne WordPress-Upload auf Ideinen Cloud-Speicher geht.

add_action(
   'wp_update_attachment_metadata',
   function(array $data, int $attachment_id) {// Upload $data['file'] to cloud storage

      if (isset($data['sizes']) && $data['sizes']) {
         foreach ($data['sizes'] as $sizeName => $sizeData) {
            // Upload $sizeData['file'] to cloud storage
         }
      }

      return $data;
   },
   9,
   2
);

WordPress Medien-URLs ändern

Um sicherzustellen, dass alle deine WordPress-API-Aufrufe die richtigen URLs für deine Medien zurückgeben, müssen Sie sich in die Filter wp_get_attachment_url, wp_get_attachment_metadata und wp_calculate_image_srcset einhängen.

add_filter(
   'wp_get_attachment_url',
   function(string $url, int $attachment_id) {
      // Modify $url to match the cloud storage URL
      return $url
   },
   9,
   2
);

add_filter(
   'wp_get_attachment_metadata',
   function(array $data, id $attachment_id) {
      if (is_array($data['sizes'])) {
         foreach ($data['sizes'] as $sizeName => $sizeData) {
            // Modify $sizeData['file'] to match the cloud storage URL
         }
      }
      return $data;
   },
   9,
   2
);

add_filter(
   'wp_calculate_image_srcset',
   function(array $sources) {
      foreach ($sources as $source) {
         // Change $source['url'] to match cloud storage URL
      }
      return $sources;
   },
   9,
   1
);

Anhänge Metadaten

Für eine Grundkonfiguration musst du überhaupt keine Metadaten speichern, da du nur eine Basis-URL benötigst, um all deine Uploads mit einem Präfix zu versehen, wenn der Cloud-Speicheranbieter es dir erlaubt, dein WordPress-Upload-Verzeichnis in seinem System zu spiegeln und dir auch URLs zur Verfügung stellt, die dieser Struktur entsprechen. Dennoch gibt es Fälle, wie z.B. Dropbox, die eine URL erzeugen, welche nicht mit der Verzeichnisstruktur des Uploads übereinstimmt. Daher musst du Metadaten für die Originaldatei und alle Zwischengrößen des Anhangs speichern, die die von Dropbox für jeden einzeln generierte URL enthalten.

Relevante Cloud-Speicher Vorteile

Mit Google Cloud und AWS an der Spitze der Cloud-Anbieterliste gibt es jede Menge davon. Die Vorteile/Möglichkeiten, deine Uploads in der Cloud zu haben, sind immens, aber ich wollte zwei Vorteile auflisten, die ich sehr nützlich finde und häufig vorkommen

1. Ereignisse nach dem Hochladen auslösen

Je nach Anbieter deiner Wahl kannst du Bilder optimieren oder mit Wasserzeichen versehen, Videos umwandeln oder Video-Thumbnails generieren und jeden anderen Fluss auslösen, den du für dein Unternehmen benötigst. Natürlich kannst du all dies auf deinem Applikationsserver mit viel Zeitaufwand erledigen. Aber das Auslagern dieser Aufgaben in die Cloud stellt sicher, dass sich die Rechenleistung deiner Server nur auf die Bereitstellung von WordPress konzentriert und vereinfacht DevOps für deine Anwendungsserver.

2. Eingeschränkter Zugriff

Wenn du jemals einen eingeschränkten Zugriff auf deine Uploads implementieren musst, kannst du dies tun, indem du die Sichtbarkeit dieser Datei-Uploads als privat markierst und signierte URLs oder Zugriffskontrolllisten verwendest, um bei Bedarf alle privaten Medien anzuzeigen.

Fazit

Obwohl es sich um einen Artikel handelt, der nur an der Oberfläche der WordPress-Integration mit Cloud-Seicher kratzt, hoffe ich, dass dieser Artikel ausreicht, um dir eine Starthilfe zum Selberausprobieren zu geben und der dir vielleicht hilft, die beste Lösung für deine WordPress-Medienverwaltungsaufgaben zu finden.

Antwort abgeben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.