WooCommerce Preis wird im Frontend nach Massenbearbeitung nicht aktualisiert
Der Bulk Editor meldet Gespeichert. (Saved.), der Bearbeitungsbildschirm des Produkts zeigt den neuen Wert, und der Shop zeigt weiter den alten Preis, die alte Beschreibung oder Variationen, die sich nicht auswählen lassen. Wird der WooCommerce-Preis im Frontend nach einer Massenbearbeitung nicht aktualisiert, ist die Änderung fast nie verloren gegangen. Es bedeutet, dass etwas zwischen der Datenbank und der Seite, die der Besucher sieht, eine ältere Kopie oder einen ganz anderen Wert zeigt. Stellen Sie zuerst fest, wo der neue Wert tatsächlich liegt, und gehen Sie dann die folgenden Ebenen der Reihe nach durch.
Prüfen Sie zuerst, ob die Änderung die Datenbank erreicht hat
Öffnen Sie ein betroffenes Produkt unter Produkte (Products) in wp-admin, im normalen WooCommerce-Produkteditor, nicht in BEAR. Was dort steht, ist in der Datenbank gespeichert.
- Der Produkteditor zeigt ebenfalls den alten Wert. Die Änderung wurde nicht gespeichert, und Caches sind nicht das Problem. Folgen Sie stattdessen Änderungen im Bulk Editor werden nicht gespeichert.
- Der Produkteditor zeigt den neuen Wert. Die Daten stimmen. Alles Folgende betrifft die Anzeige.
Der Verlauf (History)-Tab zeigt Ihnen, was eine Massenoperation tatsächlich berührt hat. Jeder Massenlauf wird mit der Liste der Felder gespeichert, die an ihm beteiligt waren, sodass Sie ihn auch direkt aus der Datenbank lesen können (ersetzen Sie wp_ durch Ihr Tabellenpräfix):
SELECT bulk_key, set_of_keys, products_count, state, started
FROM wp_woobe_history_bulk
ORDER BY id DESC
LIMIT 10;
Listet set_of_keys Ihres Laufs nur ["sale_price"], hat BEAR den Angebotspreis geschrieben und sonst nichts. Merken Sie sich das für den Abschnitt zu den Variationen weiter unten.
Sehen Sie sich schließlich den Shop in einem privaten Browserfenster an, in dem Sie nicht angemeldet sind. Seiten-Caches überspringen angemeldete Administratoren meist, der Shop kann für Sie also richtig aussehen und für jeden Besucher falsch, oder umgekehrt.
Caches zwischen Datenbank und Shopseite
Wenn BEAR ein Produkt speichert, leert es dieselben Caches, die WooCommerce leert, wenn Sie im Produkteditor auf Aktualisieren (Update) klicken: die Produkt-Transients und die Objekt-Cache-Einträge des Produkts und, wenn die bearbeitete Zeile eine Variation ist, die seines übergeordneten Produkts. Preise, Lagerbestand und die übrigen WooCommerce-Eigenschaften werden über das WooCommerce-Produktobjekt selbst gespeichert, sodass der gespeicherte Wert _price und die Preisspanne eines variablen Produkts auf die übliche Weise neu berechnet werden.
Nicht geleert werden von BEAR die Caches, die außerhalb von WooCommerce liegen:
- Seiten-Caches. Caching-Plugins, Server-Caches wie Varnish oder Nginx FastCGI Cache und CDNs wie Cloudflare speichern das fertige HTML von Produkt- und Kategorieseiten. Viele von ihnen leeren eine einzelne Seite, wenn ein Beitrag im Editor gespeichert wird; eine Massenbearbeitung ändert Hunderte Produkte auf einmal, und nicht jeder Cache reagiert darauf. Leeren Sie nach einer großen Massenbearbeitung den gesamten Seiten-Cache und den CDN-Cache.
- Persistente Objekt-Caches. Redis oder Memcached halten auch Daten anderer Plugins und des Themes. Zeigt der Shop nach dem Leeren des Seiten-Caches noch alte Werte, leeren Sie den Objekt-Cache über das Hosting-Panel oder das Caching-Plugin.
- WooCommerce-Werkzeuge. Führen Sie unter WooCommerce > Status > Werkzeuge (Tools) zuerst Transients löschen (Clear transients) aus, danach Neu erstellen (Regenerate) neben Produkt-Lookup-Tabellen (Product lookup tables) und neben Lookup-Tabelle der Produktattribute neu erstellen (Regenerate the product attributes lookup table). Die Lookup-Tabellen enthalten Kopien von Preisen, Lagerbestand und Attributen, die WooCommerce für die Sortierung nach Preis, den Preisfilter und die Attributfilterung nutzt; eine veraltete Tabelle zeigt sich daher als falsche Sortierung oder Filterung, selbst wenn die Produktseite stimmt.
- Ihr eigener Browser. Ein hartes Neuladen schließt ihn aus; den Seiten-Cache im Browser zurücksetzen nennt die Tastenkombinationen.
Der Preis ist gespeichert, aber der Shop zeigt einen anderen
Erklärt kein Cache das Problem, zeigt der Shop einen Preis, der aus dem gespeicherten berechnet oder von woanders genommen wird. BEAR schreibt die gespeicherten WooCommerce-Preise; es bestimmt nicht, was das Frontend anzeigt.
| Was der Shop zeigt | Woher es kommt |
|---|---|
| Den regulären Preis, obwohl ein Angebotspreis gesetzt ist | Das Angebot ist geplant: Bei einem Angebotszeitraum von (Sale time from) in der Zukunft verkauft WooCommerce bis zu diesem Datum weiter zum regulären Preis. Siehe Angebotspreise in Masse planen. |
| Einen Preis mit oder ohne Steuer, der vom Editor abweicht | Die Einstellungen zur Steueranzeige unter WooCommerce > Einstellungen (Settings) > Steuer (Tax) (Preise im Shop anzeigen (Display prices in the shop)) fügen für die Anzeige Steuer hinzu oder ziehen sie ab. |
| Einen anderen Preis in einer anderen Währung | Ein Währungsumschalter rechnet den Preis um oder verwendet feste Preise pro Währung, die in eigenen Feldern liegen. Siehe Preise pro Währung in Masse bearbeiten. |
| Einen anderen Preis für Großhandelskunden oder bestimmte Rollen | Plugins für Rollen- und Großhandelspreise führen eigene Preise. Siehe Großhandelspreise in Masse bearbeiten. |
| Den alten Preis in einer anderen Sprache | Jede Übersetzung ist ein eigenes Produkt mit eigenem Preis. Siehe Preise in allen WPML-Sprachen in Masse bearbeiten. |
| Eine Preisspanne, die den Preis des übergeordneten Produkts ignoriert | Ein variables Produkt verkauft zu den Preisen seiner Variationen; bearbeiten Sie die Variationen. Siehe warum das Preisfeld eines variablen Produkts deaktiviert ist. |
Rabatt- und Dynamic-Pricing-Plugins gehören in dieselbe Gruppe: Sie ändern den angezeigten Preis im Moment der Anzeige. Schalten Sie sie auf einer Staging-Kopie kurz aus, um den gespeicherten Preis zu sehen.
Beschreibung wird nicht aktualisiert: Page Builder und Theme-Templates
BEAR schreibt die Produktbeschreibung in das Standard-Inhaltsfeld von WordPress und die Kurzbeschreibung in den Auszug, dieselben Felder, die der WooCommerce-Produkteditor verwendet. Eine Seite, die etwas anderes ausgibt, ändert sich nicht.
Elementor
Eine mit Elementor gebaute Produktseite liest das Inhaltsfeld nicht. Elementor speichert das gesamte Layout, einschließlich des Textes, den Sie in ein Text-Editor-Widget getippt haben, in seinem eigenen Meta-Feld _elementor_data. Ist die Beschreibung auf der Seite statischer Text in einem Widget, erscheint dort nie eine Änderung, die außerhalb von Elementor gemacht wird. Die dauerhafte Lösung ist, das Widget das Produkt lesen zu lassen: Klicken Sie im Elementor-Editor auf das Beschreibungs-Widget, öffnen Sie das Symbol für dynamische Tags an seinem Textfeld, wählen Sie Produktinhalt (Product Content) (Produkt-Kurzbeschreibung (Product Short Description) für den kurzen Text) und veröffentlichen Sie. Dynamische Tags gehören zu Elementor Pro. Die Gestaltung des Widgets bleibt erhalten, und von da an erscheint jede Bearbeitung mit BEAR auf der Seite.
Liest das Widget das Produkt bereits, die Seite sieht aber weiter alt aus, sind die von Elementor selbst erzeugten Dateien die Ursache: Verwenden Sie Elementor > Werkzeuge > Dateien & Daten neu generieren (Elementor > Tools > Regenerate Files & Data) (CSS & Daten neu generieren (Regenerate CSS & Data) in älteren Versionen), das unabhängig von jedem Caching-Plugin ist. Beschreibung wird mit Elementor nicht aktualisiert enthält Code, der diesen Cache bei jeder Aktualisierung eines Produkts automatisch leert.
Divi und andere Builder
Ist Divi Builder verwenden (Use the Divi Builder) für ein Produkt eingeschaltet, hält Divi das Layout des Produkts im Beschreibungsfeld. BEAR zeigt dann Divi-Layoutcode in der Spalte Beschreibung (Description), und das Ersetzen ersetzt das Layout. Lassen Sie bei Produkten, deren Beschreibung Sie in Masse verwalten, den Builder am Produkt selbst ausgeschaltet und gestalten Sie die Produktseite mit einem Template, das die WooCommerce-Beschreibung ausgibt. Andere Builder halten den Text in einem eigenen Meta-Feld; der Avion Builder ist einer, und die Avion-FAQ zeigt, wie Sie dieses Feld in BEAR anhängen.
Themes und andere Plugins
Manche Themes geben einen Untertitel oder eine zweite Beschreibung aus ihrem eigenen Meta-Feld aus, und Plugins für verwandte Produkte, Badges oder eigene Tabs halten ihre Daten in Meta-Feldern und cachen ihre Ausgabe oft. Ignoriert ein Element auf der Seite Ihre Änderung, finden Sie heraus, welches Feld es tatsächlich liest, wie in den Meta-Schlüssel eines Produkts finden beschrieben, und bearbeiten Sie dieses Feld. Stimmt das Feld und die Ausgabe ist trotzdem alt, führt dieses Plugin seinen eigenen Cache.
Variationen nicht auswählbar oder nach einer Massenbearbeitung verschwunden
Nach Preisänderungen an variablen Produkten treten zwei Symptome auf: Die Produktseite zeigt nur die Preisspanne und nach der Wahl einer Größe Bitte wählen Sie Produktoptionen, bevor Sie dieses Produkt in den Warenkorb legen. (Please select some product options before adding this product to your cart.), oder die Variationen und Attribute verschwinden vom Produkt ganz.
Beginnen Sie im Produkteditor. Auf dem Tab Attribute (Attributes) muss jedes Attribut, das die Variationen verwenden, vorhanden und mit Für Varianten verwendet (Used for variations) angehakt sein. Auf dem Tab Varianten (Variations) muss jede Variation aktiviert sein, einen Preis haben und für jedes Attribut einen Wert besitzen. Eine Variation ohne Preis lässt sich nicht kaufen, und ein übergeordnetes Produkt ohne seine Attribute zeigt gar keine Auswahl, was auch der übliche Grund dafür ist, dass in Masse erstellte Variationen im Shop nicht erscheinen.
Ist die Admin-Seite vollständig, liest das Frontend veraltete Daten: Leeren Sie die Transients und erstellen Sie beide Lookup-Tabellen neu wie oben beschrieben, leeren Sie den Objekt-Cache und den Seiten-Cache und testen Sie mit einem Standard-Theme wie Storefront.
Sind die Attribute tatsächlich weg, vergleichen Sie mit dem Verlauf. Eine Massenänderung des Angebotspreises schreibt nur den Angebotspreis; sie berührt weder die Attribute noch die Attributwerte der Variationen noch die Begriffe des Produkts. Aber jedes Speichern eines Produkts löst die üblichen Speicher-Hooks von WordPress und WooCommerce aus, und ein Plugin, das auf sie hört, kann auf ein Speichern, das nicht vom Produktbearbeitungsbildschirm kam, damit reagieren, dass es Daten löscht, die es in diesem Formular erwartet hat. Swatch-Plugins, Variationswerkzeuge, Import- und Sync-Plugins sowie Feed-Generatoren sind die üblichen Verdächtigen. Setzen Sie die Operation im Verlauf zurück, wiederholen Sie sie dann auf einer Staging-Kopie, auf der nur WooCommerce und BEAR aktiv sind, und aktivieren Sie die anderen Plugins eines nach dem anderen. Plugins bei Massenbearbeitungen isolieren zeigt, wie Sie ein solches Plugin dauerhaft aus den Anfragen von BEAR heraushalten.
Wenn der Shop weiter den alten Wert zeigt
- Der Produkteditor in wp-admin zeigt den neuen Wert; andernfalls ist es ein Speicherproblem.
- Der Verlauf listet die Operation mit den erwarteten Feldern und nichts weiter.
- Seiten-Cache, CDN-Cache und Objekt-Cache sind geleert, und der Shop ist in einem privaten Fenster geprüft.
- Transients löschen und beide Werkzeuge für die Lookup-Tabellen unter WooCommerce > Status > Werkzeuge wurden ausgeführt.
- Geplante Angebote, Steueranzeige, Währung, Rollenpreise und Übersetzungen sind bei Preisen ausgeschlossen.
- Das Element, das die Beschreibung zeigt, liest das WooCommerce-Feld, nicht die Kopie eines Builders oder Themes.
- Mit nur WooCommerce, BEAR und einem Standard-Theme auf einer Staging-Kopie erscheint die Änderung.
Trifft all das zu und der Shop zeigt trotzdem die alten Daten, eröffnen Sie ein Thema im BEAR-Support-Forum mit der Produkt-ID, dem Feld, dem, was der Produkteditor zeigt, und dem, was der Shop zeigt.