BEAR - WooCommerce Bulk Editor and Products Manager Professional

WooCommerce Angebotspreise in Masse planen: Datum, Uhrzeit und Zeitzone

Um WooCommerce Angebotspreise in Masse zu planen, brauchen Sie keinen Scheduler: Jedes Produkt hat bereits zwei Felder für das Angebotsdatum, und WooCommerce selbst schaltet den Preis an diesen Tagen ein und wieder aus. Verwirrend ist, wie diese Daten funktionieren: Es sind ganze Tage, sie folgen der WordPress-Zeitzone, und das Umschalten hängt von einer Hintergrundaufgabe ab. Im Folgenden: ein befristetes Angebot für Hunderte von Produkten in einem BEAR-Lauf, warum sich keine Uhrzeiten festlegen lassen, warum ein Angebot einen Tag versetzt startet oder scheinbar nie endet und was zu tun ist, wenn die Änderung kein Angebot ist.

WooCommerce Angebotspreise in Masse planen: viele Produkte in einem Lauf

Ein Black-Friday-Angebot mit 25 % Rabatt vom 27. bis 30. November ist ein einziger Lauf im Tab Massenbearbeitung (Bulk Edit):

  1. Wählen Sie die Produkte im Tab Filter (Filters) aus (eine Kategorie, ein Schlagwort, eine Marke) und prüfen Sie oben im Tab Massenbearbeitung die Zeile Massenbearbeitung wird angewendet auf (Bulk editing will be applied to).
  2. Markieren Sie im Bereich Basis (Basic) Angebotspreis (Sale price), geben Sie 25 ein und wählen Sie regulärer Preis minus % (regular price minus %).
  3. Öffnen Sie den Bereich Zusätzlich (Additional), markieren Sie Angebotszeitraum von (Sale time from) und wählen Sie den 27. November, markieren Sie Angebotszeitraum bis (Sale time to) und wählen Sie den 30. November.
  4. Klicken Sie auf Massenbearbeitung durchführen (Do Bulk Edit).

Bis zum 27. zeigt der Shop weiterhin die regulären Preise, ab Beginn des 27. sind die Produkte im Angebot, und nach Ende des 30. gilt wieder der reguläre Preis. An einen Lauf zum Angebotsende müssen Sie nicht denken.

Beide Teile sind nötig. Die Daten begrenzen einen Angebotspreis nur zeitlich: Daten ohne Angebotspreis bewirken nichts, und ein Angebotspreis ohne Daten ist sofort aktiv und bleibt es, bis Sie ihn entfernen. Variable Produkte speichern Preise und Angebotsdaten an ihren Variationen, brauchen also den Schalter Variationen (variations) und einen eigenen Lauf; Produktauswahl, Schalter und die passende Preisoperation behandelt der Artikel alle Produkte ins Angebot setzen.

Beim Speichern der Daten setzt BEAR auch den aktiven Preis für den aktuellen Zeitpunkt: Ein Angebot, das heute beginnt, ist sofort aktiv, ein späteres behält den regulären Preis bis zu seinem Tag.

Angebotsdaten sind ganze Tage: warum sich keine Uhrzeit festlegen lässt

WooCommerce speichert Beginn und Ende eines Angebots als zwei Zeitpunkte, doch der Produktbildschirm lässt nur die Auswahl von Daten zu, und BEAR folgt derselben Regel. Angebotszeitraum von wird als 00:00:00 des gewählten Tages gespeichert, Angebotszeitraum bis als 23:59:59 seines Tages, jeweils in der Zeitzone der Website. Das Enddatum ist eingeschlossen: Ein Angebot bis zum 30. November läuft den ganzen 30. Der Kalender in BEAR zeigt deshalb nur Daten an; eine irgendwo eingegebene Uhrzeit würde beim Speichern verworfen.

Zwei Filter legen fest, ob BEAR den Anfang oder das Ende eines Tages verwendet: woobe_on_sale_from_set_day (Standard false, der Tagesbeginn) und woobe_on_sale_to_set_day (Standard true, das Tagesende). Soll ein Angebot beispielsweise zu Beginn des gewählten Enddatums enden, sodass der Vortag der letzte Tag des Angebots ist, lautet der Code:

/*
 * BEAR: save "Sale time to" as 00:00:00 of the chosen day instead of 23:59:59.
 * Child theme functions.php or a code snippets plugin.
 */
add_filter('woobe_on_sale_to_set_day', '__return_false');

Diese Filter wählen nur zwischen den beiden Tagesgrenzen; ein Angebot für 18:00 Uhr lässt sich damit nicht planen. Der WooCommerce-Produkteditor speichert stets das Tagesende, ein dort später gespeichertes Produkt fällt daher wieder unter diese Regel. Ein Angebot, das zu einer bestimmten Uhrzeit beginnt, ist nur per Code oder über die WooCommerce-REST-API möglich, die ein vollständiges Datum samt Uhrzeit akzeptieren.

Auch Uhrzeiten wirken verschoben, wo sie roh angezeigt werden: WooCommerce speichert die Zeitpunkte in UTC, sodass ein Angebot, das in New York um 23:59:59 endet, in der Datenbank als 03:59 oder 04:59 Uhr am nächsten Tag erscheint. Es ist derselbe Zeitpunkt.

Geplantes Angebot einen Tag versetzt: die WordPress-Zeitzone

Jeder oben genannte „Tagesbeginn“ und jedes „Tagesende“ wird in der Zeitzone berechnet, die unter Einstellungen → Allgemein → Zeitzone (Timezone) eingestellt ist. Verwendet die Website noch UTC+0, während der Shop in Hongkong steht, beginnt ein Angebot ab dem 18. November um 08:00 Uhr Ortszeit; bei einem Shop auf Hawaii beginnt dasselbe Angebot am 17. um 14:00 Uhr, was nach einem Tag zu früh aussieht. Das Angebot selbst funktioniert; es folgt nur der falschen Uhr.

  • Wählen Sie in der Liste Zeitzone eine Stadt statt eines festen UTC+X-Offsets. Eine Stadt folgt der Sommerzeit; ein fester Offset liegt ein halbes Jahr lang eine Stunde daneben. Siehe den Bildschirm Allgemeine Einstellungen in der WordPress-Dokumentation.
  • Setzen Sie nach einer Änderung der Zeitzone die Daten bei den Produkten des nächsten Angebots erneut: Bereits gespeicherte Daten behalten die mit der alten Einstellung berechneten Zeitpunkte.
  • Prüfen Sie ein Produkt des Laufs im WooCommerce-Produkteditor. Dessen Zeitraum des Angebotspreises (Sale price dates) sollte die gewählten Tage anzeigen.

Angebote über eine Zeitumstellung hinweg

BEAR rechnet den gewählten Tag mit dem Offset um, den WordPress beim Speichern meldet. Wechselt zwischen diesem Tag und dem Angebot die Uhrzeit, wie bei einem im Oktober vorbereiteten Black-Friday-Angebot, beginnt und endet das Angebot eine Stunde versetzt: ab 23:00 Uhr am Vorabend bis 22:59 Uhr am letzten Tag, oder ab 01:00 Uhr am ersten Tag bis 00:59 Uhr nach dem letzten, wenn die Uhren in die andere Richtung umgestellt werden. Der WooCommerce-Produkteditor rechnet mit dem Offset des Angebotstages, zeigt daher eines der beiden Daten um einen Tag versetzt an, und ein Klick auf Aktualisieren (Update) speichert dort das angezeigte Datum. Wenn es auf die genaue Stunde ankommt, setzen Sie die Daten nach der Zeitumstellung und speichern Sie diese Produkte vor dem Angebot nicht erneut im WooCommerce-Editor.

Wie WooCommerce ein geplantes Angebot startet und beendet

BEAR schreibt nur den Angebotspreis und die beiden Daten; das Umschalten des Preises zum richtigen Zeitpunkt ist Aufgabe von WooCommerce und funktioniert gleich für Produkte, die in BEAR, im Produkteditor oder per Import bearbeitet wurden. Seit WooCommerce 10.5 erzeugt das Speichern von Angebotsdaten pro Produkt zwei Hintergrundaktionen, wc_product_start_scheduled_sale und wc_product_end_scheduled_sale, die auf den genauen Beginn und das genaue Ende gesetzt sind. Eine tägliche Aufgabe woocommerce_scheduled_sales fängt alles auf, was sie verpasst haben. Ältere Versionen verließen sich allein auf diese tägliche Aufgabe, weshalb Angebote dort Stunden oder sogar einen Tag zu spät umschalten konnten.

Endet ein Angebot, schaltet das aktuelle WooCommerce nur den aktiven Preis zurück auf den regulären Preis. Der Angebotspreis und beide Daten bleiben am Produkt: Der Shop zeigt den regulären Preis und kein Angebots-Badge, während der Produkteditor und die BEAR-Tabelle weiterhin den alten Angebotspreis und die alten Daten anzeigen. Das ist der normale Zustand eines beendeten Angebots, kein Angebot, das nicht geendet hat. Ältere Versionen löschten Angebotspreis und Daten am Ende.

Wenn ein Angebot im Shop tatsächlich nicht gestartet oder nicht beendet wurde:

  1. Aktionen prüfen. Öffnen Sie WooCommerce → Status → Geplante Aktionen (Scheduled Actions) und suchen Sie nach der Produkt-ID oder nach wc_product_end_scheduled_sale. Eine Aktion im Status Ausstehend (Pending), deren Zeitpunkt verstrichen ist, bedeutet, dass die Hintergrundaufgaben nicht laufen. Bei Fehlgeschlagen (Failed) steht ein Fehler in ihrem Protokoll.
  2. WP-Cron prüfen. Diese Aktionen verarbeitet WP-Cron, das nur läuft, wenn die Website Besuche erhält. Ist DISABLE_WP_CRON in der wp-config.php gesetzt, muss ein echter Cronjob auf dem Server alle paar Minuten wp-cron.php aufrufen; die WordPress-Anleitung zum Einbinden von WP-Cron in den System-Taskplaner zeigt, wie. Auf einer Website mit wenig Traffic kann eine Aktion auf den ersten Besuch nach ihrem Zeitpunkt warten.
  3. Seiten-Cache leeren. Eine im Cache gespeicherte Produkt- oder Kategorieseite zeigt weiter den alten Preis, bis der Cache geleert wird oder abläuft.
  4. Ohne Rabatt-Plugins testen. Preis- und Rabatt-Plugins wie Woo Discount Rules berechnen den angezeigten Preis selbst, sodass ein geplantes WooCommerce-Angebot durch ihre Regeln verdeckt oder verdoppelt werden kann. Deaktivieren Sie sie auf einer Staging-Kopie oder prüfen Sie ihre Regeln für dieselben Produkte.
  5. Mit WooCommerce selbst vergleichen. Geben Sie einem Testprodukt im WooCommerce-Produkteditor dieselben Daten. Schaltet es ebenfalls nicht um, liegt die Ursache beim Server oder einem anderen Plugin, nicht in der Art, wie die Daten geschrieben wurden.

Ein neues Angebot für ein Produkt, das bereits eines hatte

Da ein beendetes Angebot seine Daten behält, übernimmt ein allein geschriebener neuer Angebotspreis diese. Bei einem Enddatum in der Vergangenheit erscheint er nie; bei einem alten Enddatum, das noch in der Zukunft liegt, endet er an diesem Tag. Schreiben Sie bei einem neuen Angebot den Angebotspreis und beide Daten im selben Lauf oder löschen Sie zuerst die alten Daten.

Eine künftige Preisänderung, die kein Angebot ist

BEAR wendet eine Massenoperation an, wenn Sie auf die Schaltfläche klicken; es kann keine zurückhalten und an einem Datum ausführen. Ist die Änderung vorübergehend, schreiben Sie sie wie oben als Angebot mit Daten. Ist sie es nicht:

  • Ein neuer regulärer Preis ab einem Datum. Bereiten Sie den Filter und die Operation vorab vor und führen Sie sie im Moment der Änderung aus. Ein Lauf über Tausende von Produkten dauert Minuten; bei großen Katalogen siehe Tausende von Produkten in Masse bearbeiten. Preis-Plugins mit zeitgesteuerten Regeln sind der andere Weg.
  • Zwei Angebote direkt hintereinander, zum Beispiel 15 % bis 31. August und 20 % ab 1. September. Ein Produkt hat nur einen Angebotspreis, daher lässt sich das zweite Angebot nicht speichern, solange das erste läuft: Das Überschreiben des Angebotspreises ändert das laufende Angebot sofort. Führen Sie das zweite Angebot mit seinen Daten aus, wenn das erste endet.
  • Nicht das Veröffentlichungsdatum. Ein Veröffentlichungsdatum (Date Published) in der Zukunft plant keinen Preis. WordPress macht solche Produkte zu geplanten Beiträgen, und sie verschwinden bis zu diesem Datum aus dem Shop.

Angebotsdaten in Masse entfernen oder den Lauf rückgängig machen

Um alte Daten bei vielen Produkten zu löschen, wählen Sie sie mit Checkboxen aus, schalten Sie die verknüpfte Bearbeitung (binded editing) ein und leeren Sie die Datumszelle eines davon; die FAQ zum Entfernen von Angebotsdaten zeigt die Schritte. Um Produkte mit beendetem Angebot zu finden, blenden Sie die Spalte Angebotszeitraum bis ein und sortieren Sie danach. Der Angebotspreis selbst wird mit -1 und neuen Wert setzen (set new) entfernt, wie in der FAQ zum Entfernen von Angebotspreisen beschrieben.

Ein falsches Datum in einem großen Lauf muss nicht von Hand korrigiert werden: Jeder Massenlauf ist ein Eintrag im Tab Verlauf (History), und sein Zurücksetzen stellt die bisherigen Daten und Preise aller geänderten Produkte wieder her.

Checkliste vor dem Start des Angebots

  • Einstellungen → Allgemein → Zeitzone ist Ihre Stadt.
  • Angebotspreis und beide Daten wurden im selben Lauf geschrieben; variable Produkte hatten einen eigenen Lauf mit eingeschaltetem Schalter Variationen.
  • Ein im WooCommerce-Editor geöffnetes Produkt zeigt den erwarteten Zeitraum des Angebotspreises.
  • Ab WooCommerce 10.5 listen die Geplanten Aktionen ausstehende Aktionen für Beginn und Ende dieses Produkts auf, und keine ausstehende Aktion ist überfällig.
  • Seiten-Cache-Regeln und Rabatt-Plugins verdecken die neuen Preise nicht.

Sind die Daten richtig, laufen die Aktionen und der Preis schaltet trotzdem nicht um, beschreiben Sie das Produkt, die Daten und den Zustand seiner geplanten Aktionen im BEAR-Support-Forum.