Cloud-Speicher in WordPress-Projekte integrieren

Cloud-Speicher in WordPress Projekte integrieren

In diesem Artikel beschreibt Inpsyder Cristiano, wie Cloud-Speicher in WordPress-Projekte integriert werden können.

In diesem 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: WordPress installieren und fertig. Es gibt grundlegende Einstellungen, die konfiguriert werden können. Dies sind z. B. die Struktur der Upload-Verzeichnisse, Thumbnail-Größen oder welche Mime-Typen hochgeladen werden können. Aber es können auch die Standardeinstellungen übernommen werden.

Dies funktioniert gut, wenn WordPress von einem einzelnen Server aus bedient wird. Aber wenn eine Website viel Traffic bewältigen muss, muss sie höchstwahrscheinlich auf einem Cluster von Servern hinter einem Load Balancer laufen. Das bedeutet, dass das Upload-Verzeichnis von allen Servern im Cluster freigegeben werden muss. Es bedeutet auch, dass man entweder ein Hosting benötigt, das das erledigt oder es selber erledigen muss. Hierfür benötigt man einen zentralen Medienserver, eine Datensynchronisation zwischen Servern oder höchstwahrscheinlich Cloud-Speicher.

Mit diesem Artikel gebe ich einen Überblick darüber, wie man Cloud-Speicher in WordPress-Projekte integrieren kann.

Warum Cloud-Speicher?

Die Verwendung eines zentralisierten Medienservers wäre eine Möglichkeit, aber das bedeutet, dass die 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öht das die Komplexität der Infrastruktur. Infolgedessen sind Dateien möglicherweise nicht auf allen Servern sofort verfügbar und es können alle Arten von Synchronisierungsproblemen auftreten. So würde man viel Zeit investieren, um diese Probleme aufzuspüren, zu debuggen und zu beheben.

Cloud Storage interagiert mit einer einzigen HTTP-API und entlädt alle Medienanforderungen von den Servern. Auf diese Weise wird die technische Verantwortung auf den Drittanbieter übertragen, einschließlich Verfügbarkeit, Backups, Versionierung (in der Regel optional) und Zugriffskontrolle. Sie werden auch sofort einsatzbereit sein, ohne dass etwas eigenes entwickelt werden muss, um sich 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ötigt man also, um eine WordPress-Bibliothek in die Cloud zu verschieben? Zuerst muss natürlich ein Cloud-Speicheranbieter ausgewählt werden, der über eine API verfügt, die zumindest die grundlegenden CRUD-Operationen ermöglicht. Dann muss die Struktur des Upload-Verzeichnisses ausgewählt werden. Anschließend muss entschieden werden, welche Metadaten man speichern muss, falls vorhanden. Und schließlich muss man sich an den richtigen Stellen in WordPress einhaken.

Bei der Migration eines Projektes, das bereits Uploads enthält, müssen auch zuerst alle diese Uploads auf den Cloud Storage kopiert und sichergestellt werden, 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. Für diejenigen, die nicht alles selber einstellen möchten, 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 wird sichergestellt, dass jeder einzelne WordPress-Upload auf den 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 WordPress-API-Aufrufe die richtigen URLs für 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 müssen überhaupt keine Metadaten gespeichert werden, da nur eine Basis-URL benötigt wird, um alle Uploads mit einem Präfix zu versehen, wenn der Cloud-Speicheranbieter es erlaubt, das WordPress-Upload-Verzeichnis in seinem System zu spiegeln und 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 müssen Metadaten für die Originaldatei und alle Zwischengrößen des Anhangs gespeichert werden.

Relevante Cloud-Speicher-Vorteile

Mit Google Cloud und AWS an der Spitze der Cloud-Anbieterliste gibt es jede Menge davon. Die Vorteile/Möglichkeiten, 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 können Bilder optimiert oder mit Wasserzeichen versehen, Videos umgewandelt oder Video-Thumbnails generiert und jeder anderen Fluss ausgelöst werden, den man für das Unternehmen benötigt. Natürlich kann man all dies auf dem Applikationsserver mit viel Zeitaufwand erledigen. Aber das Auslagern dieser Aufgaben in die Cloud stellt sicher, dass sich die Rechenleistung der Server sich nur auf die Bereitstellung von WordPress konzentriert und vereinfacht DevOps für die Anwendungsserver.

2. Eingeschränkter Zugriff

Wenn man jemals einen eingeschränkten Zugriff auf Uploads implementieren muss, kann man dies tun, indem man die Sichtbarkeit dieser Datei-Uploads als privat markiert und signierte URLs oder Zugriffskontrolllisten verwendet, um bei Bedarf alle privaten Medien anzuzeigen.

Fazit

Obwohl es sich hierbei um einen Artikel handelt, der nur an der Oberfläche der WordPress-Integration mit Cloud-Speicher kratzt, hoffe ich, dass meine Ausführungen eine Starthilfe zum Selberausprobieren geben und dabei helfen, die beste Lösung für WordPress-Medienverwaltungsaufgaben zu finden.