Inhaltsverzeichnis

Im E-Commerce zählt jede Sekunde. Die Effizienz Deines Online-Shops kann über Erfolg oder Misserfolg Deines Unternehmens entscheiden. WooCommerce, eine beliebte E-Commerce-Plattform für WordPress, hat diese Notwendigkeit für Geschwindigkeit und Transferfähigkeit endlich erkannt und führt mit der Version 8.2 High-Performance Order Storage (HPOS) ein.

Mit der Einführung von HPOS ist WooCommerce in der Lage Testumgebungen zu synchronisieren und den Relaunch von Shopsystemen einfacher zu gestalten.

Was ist High-Performance Order Storage?

Bisher war WooCommerce eng mit WordPress verbunden. Die Daten wurden in den Post- und Postmeta-Tabellen des Content Management Systems gespeichert, was eine nahtlose Integration mit WordPress und den entsprechenden APIs ermöglichte.

High-Performance Order Storage (HPOS), früher bekannt als Custom Order Tables, ist eine robuste Lösung, die die Speicherung von Bestelldaten in einer WooCommerce-Datenbank neu definiert.

HPOS reduziert die Vermischung bestehender Daten und verbessert die Gesamtleistung des Systems.

Das Hauptziel ist es, eine optimierte und leicht verständliche Datenbankstruktur zu bieten, die auf Deine spezifischen Bedürfnisse von E-Commerce-Operationen zugeschnitten ist. Durch die Nutzung des WooCommerce CRUD (Create, Read, Update, Delete) Designs stellt HPOS sicher, dass Bestelldaten in benutzerdefinierten Tabellen gespeichert werden.

Bisher wurden die Bestellungen in der _posts and _postmeta gespeichert. Durch HPOS werden nun vier neue Tabellen angelegt:

  • _wc_orders
  • _wc_order_addresses
  • _wc_order_operational_data
  • _wc_orders_meta

Es gilt zu beachten: jede HPOS-Bestellung hat ihren eigenen „Bestellplatzhalter„, der ein benutzerdefinierter Eintrag vom Typ shop_order_placehold ist, der in der Tabelle wp_posts erstellt wird. Er enthält die eigentliche Bestell-ID, aber fast alle anderen Spalten in dieser Datenbankzeile sind leer. Auch in die Tabelle wp_postmeta wird nichts geschrieben. Leider ist es daher noch nicht vollständig möglich zB die wp_posts einmal komplett zu leeren (bei einem Relaunch recht wichtig, sonst sammeln sich die alten Daten des Pagebuilders zB noch darin..)

Gutscheine fehlen

Aktuell werden die Gutscheine weiterhin in der wp_posts gespeichert, wodurch diese zum Beispiel über WP All Import/Export Pro (mit der WC Erweiterung) importiert werden müssen.

Vorteile von HPOS

  1. Optimierte Datenbankstruktur: HPOS führt dedizierte Tabellen für kritische Daten wie Bestellungen und Bestelladressen ein. Dieser vereinfachte Ansatz minimiert Lese-/Schreiboperationen, reduziert die Belastung der Datenbank und verbessert Deine Gesamtleistung.
  2. Dedizierte Indizes: Die Einführung dedizierter Indizes verfeinert die Effizienz der Datenabfrage weiter. Das bedeutet weniger beschäftigte Tabellen, was zu schnelleren und reaktionsfähigeren Abfragen führt.
  3. Skalierbarkeit ohne Expertenintervention: Eine der herausragenden Funktionen von HPOS ist Deine Fähigkeit, Deinen E-Commerce-Shop aller Größen zu ermöglichen, Deine Operationen zu skalieren, ohne dass Expertenintervention erforderlich ist. Dies stellt sicher, dass Du wachsen und Dich ausdehnen kannst, ohne durch datenbankbezogene Engpässe behindert zu werden.

Wie aktivierst Du HPOS?

woocommerce hpos (high-performance order storage) erklärt hpos umstellen
Aufrufbar unter: /wp-admin/admin.php?page=wc-settings&tab=advanced&section=features

HPOS ist ab WooCommerce 8.2 standardmäßig für neue Installationen aktiviert. Aktuell ist HSPO aber noch ein Opt-in Feature das aktiviert werden muss. Bestehende Shops können von der WordPress-Posts-Speicherung auf High-Performance Order Storage umstellen, indem Du die folgenden Schritte befolgst:

  • Navigiere in WP Admin zu WooCommerce > Einstellungen > Erweitert > Funktionen.
  • Aktiviere das Kontrollkästchen „Kompatibilitätsmodus aktivieren“.
  • Sobald diese Einstellung aktiviert ist, werden Hintergrundsynchronisationen durchgeführt.

Sobald das Kontrollkästchen aktiviert und die Änderungen gespeichert sind, wird die Aktion wc_schedule_pending_batch_process gestartet, um zu überprüfen, ob Bestellungen nachgefüllt werden müssen. Falls ja, wird die Aktion wc_run_batch_process ausgelöst. Es werden 25 Bestellungen pro Aktion syncrhonisiert.

  • Nach erfolgreicher Synchronisierung der Tabellen kannst Du zur HPOS-Option wechseln (Auswahl des Radiobuttons „Leistungsstarke Speicherung von Bestellungen“).
  • Es wird empfohlen, den Kompatibilitätsmodus eine Weile aufrechtzuerhalten, um einen reibungslosen Übergang zu gewährleisten.
Probleme?

Da sich die Tabellen und die Datenstruktur verändern, kann es zu Problemen mit veralteten Plugins kommen – bei Problemen kann aber zur _posts-Tabelle zurückgekehrt werden.
Solltest Du auf Probleme mit Drittanbieter-Erweiterungen stoßen, die nicht ordnungsgemäß mit High-Performance Order Storage funktionieren, empfiehlt es sich, die jeweiligen Entwickler zu benachrichtigen und sie um die Integration von HPOS-Unterstützung zu bitten. Es liegt in der Verantwortung der Pluginentwickler sicherzustellen, dass ihre Erweiterungen mit HPOS kompatibel sind.

WP-CLI zur Aktivierung von HPOS nutzen

Wenn eine oder mehrere aktive Erweiterungen noch nicht mit HPOS kompatibel sind, lässt die Benutzeroberfläche den Benutzer HPOS nicht aktivieren, da dies auf einer Live-Site unsicher wäre. Für Tests und um eine Erweiterung für die Arbeit mit HPOS zu aktualisieren, kann es jedoch nützlich sein, dies zu umgehen. Die Option zum Aktivieren von HPOS heißt woocommerce_feature_custom_order_tables_enabled und kann über die WP CLI wie folgt aktiviert werden:

wp option set woocommerce_custom_orders_table_enabled yes

Du kannst entweder darauf warten, dass Bestellungen über den Aktionsplaner synchronisiert werden, oder den Vorgang über den WP CLI-Befehl beschleunigen:

wp wc cot sync

Weitere technische Infos wie API, HPOS Detection, Überprüfung von Inkompatibilitäten usw findest Du im offiziellen GitHub Wiki von Woocommerce.
Eine Guide findest Du auf Englisch hier.

Häufig gestellte Fragen (FAQ)

Diese Fragen & Antworten sind aus den offiziellen englischen Quellen ins deutsche übersetzt. Das gesamte Thema wird hier sowie hier offiziell behandelt.

Muss ich HPOS in meinem bestehenden Shop aktivieren?

Kein Problem! Obwohl wir alle dazu ermutigen, zu HPOS zu wechseln, um die vollen Vorteile einer schnelleren Checkout-Erfahrung für Deine Kunden zu genießen, verstehen wir, dass nicht jeder sofort damit experimentieren möchte. Die Funktion ist vollständig optional und Du kannst jederzeit wechseln.

Meine bevorzugte Erweiterung ist nicht mit HPOS kompatibel; was soll ich tun?

Wir haben aktiv die bevorstehenden HPOS-Änderungen mit unserer Entwicklergemeinschaft kommuniziert. Wir haben mehrere Blog-Beiträge, Anleitungen zur Aktualisierung von Erweiterungen auf GitHub und eine vollständige Dokumentation. Trotz unserer Bemühungen, die Erweiterungsentwickler zum Wechsel zu bewegen, kann es sein, dass einige Entwickler HPOS nicht unterstützen. Wenn eine Deiner Erweiterungen inkompatibel ist, empfehlen wir Dir dringend, Dich an das Support-Team des jeweiligen Entwicklers zu wenden und um das Update zu bitten. Du kannst die Erweiterung weiterhin ohne HPOS verwenden, wenn Du sie bereits installiert hast.

Können kleine Unternehmen HPOS nutzen oder ist es nur für größere Unternehmen gedacht?

Unternehmen aller Größen werden von der High-Performance Order Storage profitieren.

Ich habe einen Shop mit hohem Volumen auf WooCommerce. Wie wirkt sich das auf meinen Shop aus?

Bestehende Shops werden nicht automatisch zu HPOS migriert. Die Funktion ist vollständig optional. Du kannst HPOS aktivieren, indem Du die oben genannten Schritte befolgst.

Gibt es spezifische Hosting-Anforderungen oder Einschränkungen für die Verwendung von HPOS?

Es gibt keine Hosting-Beschränkungen. Jeder Host, der WordPress und WooCommerce ausführen kann, sollte keine Probleme haben, HPOS auszuführen. Dies sollte die Leistung sogar in vielerlei Hinsicht erhöhen, nachdem es aktiviert wurde. Erfahre mehr über die Serveranforderungen für WooCommerce.

Sind Codeänderungen erforderlich, wenn eine benutzerdefinierte Taxonomie gegen den shop_order-Beitragstyp registriert wurde?

Nein, nicht für bestehende Bestellungen. Für neue Bestellungen fügen wir jedoch eine Platzhalterzeile in die Beitrags-Tabelle mit dem post_type shop_order_placehold ein. Wenn Du post_type direkt überprüfst, musst Du es möglicherweise ändern.

Was ist die Empfehlung für den Umgang mit wpdb-Abfragen, bei denen Joins zu den Beitrags-/Beitrags-Metatabelle stattfinden?

Wenn Du benutzerdefinierte Metadaten verknüpfst, wird das Verwenden von WC_Query mit dem Parameter meta_query beide Datenspeichertypen verarbeiten. Wenn Du einen meta_key verknüpfst, der jetzt in einer richtigen Spalte im HPOS migriert ist, solltest Du einen field_query-Parameter mit derselben Eigenschaft wie eine meta_query verwenden können. Wir planen, dies auf CPT zurückzusetzen, damit dieselbe Abfrage für beide Tabellen funktioniert.

Beim Durchlaufen vieler Bestellungen und Aktualisieren von Metadaten gibt es eine Möglichkeit, einige Metadaten zu aktualisieren, ohne das vollständige $order-Objekt zu benötigen?

Du kannst alle Bestellungen auf einmal mit wc_get_orders abrufen und dann die zurückgegebenen Bestell-Objekte durchlaufen. wc_get_orders verwendet sehr wenige Abfragen, um in großen Mengen abzurufen, daher sollte es schnell sein.

Marktplatz-Plugins verwenden post_author, um den Anbieter der Bestellung zuzuweisen. Wird eine Lookup-Tabelle benötigt?

Das würde davon abhängen, wie auf dieses Feld zugegriffen wird. Es könnte weiterhin wie zuvor funktionieren, wenn sie WordPress-APIs direkt verwenden, da es um die Tatsache herum funktionieren würde, dass es nicht in den Standardbestellfeldern enthalten ist. Da wir immer noch den Platzhalterbeitrag in der Beitrags-Tabelle erstellen, wird die Erweiterung einen Ort haben, an dem die Daten gespeichert werden können. Wir könnten jedoch dieses Feld zur Bestellungen-Datenbank hinzufügen, wenn dafür ein starker Bedarf besteht.

Erhalten Benutzer Updates von Erweiterungen wie WooCommerce Stripe Payment Gateway & WooCommerce Subscriptions zur Unterstützung von HPOS?

Ja, beide dieser Plugins werden aktiv weiterentwickelt, um HPOS zu unterstützen.

Meine vorhandenen Bestellungen scheinen nicht automatisch synchronisiert zu werden. Was ist falsch?

Versuche, auf die Schaltfläche „Änderungen speichern“ zu klicken. Dadurch sollte die Synchronisierung erneut ausgelöst werden. Stelle sicher, dass Du das Kontrollkästchen „Die Beitrags-Tabelle und die Bestellungs-Tabelle synchron halten“ aktiviert hast.

Alle meine Interaktionen mit Bestelldaten erfolgen über das CRUD. Wird weiterhin alles wie erwartet funktionieren?

Wenn alle Interaktionen mit Bestelldaten über CRUD erfolgen, sollte alles wie erwartet funktionieren, und Du solltest nichts ändern müssen.

Welche Hooks und Filter sind im neuen HPOS verfügbar?

Wir verwenden dieselbe WP_List_Table-Klasse, die benutzerdefinierte Beitragstypen verwenden, um alle Bestell-Adminbildschirme zu rendern. Das bedeutet, dass alle Hooks und Filter, die im Beitragsscreen verfügbar waren, auch mit HPOS verfügbar sind, jedoch hat sich die screen_id geändert. Wenn Du beispielsweise manage_shop_order_posts_columns verwendet hast, kannst Du manage_woocommerce_page_wc-orders_columns verwenden. Die übergebenen Parameter bleiben gleich, aber überall dort, wo Du ein Post-Objekt erhalten hast, erhältst Du stattdessen ein Bestell-Objekt.

Ebenso müsstest Du die screen_id für alle Hooks und Filter von shop_order_posts in woocommerce_page_wc-orders ändern.

Die WooCommerce FeaturesUtil::declare_compatibility ist in der neuesten, öffentlichen WooCommerce-Version nicht verfügbar. Wenn ich diese Überprüfung in mein Plugin integriere, welche Art von Überprüfung empfiehlst Du, bevor ich diese Funktion aufrufe?

Im Moment kannst Du die class_exists-Überprüfung wie folgt verwenden. Du kannst sie entfernen, sobald die mindestens unterstützte WC-Version für Dein Plugin über 7.1 liegt.

Schreibe einen Kommentar

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