WooCommerce: Bewertungen verschieben

15. März 2021 von Michael Nissen · , ,

Bewertungen sind ein wichtiger Vertrauensfaktor im E-Commerce. Sie sind häufig maßgeblich für eine Kaufentscheidung. Das gilt umso mehr, je unbekannter das verkaufte Produkt oder die jeweilige Marke ist. Nicht nur aus diesem Grund bietet es sich an, die Bewertungs-Funktion in WooCommerce zu nutzen.

Gleichzeitig lebt ein Online-Shop auch. Neue Produkte kommen hinzu, bestehende bearbeitet und alte gelöscht. Häufig wird auch der Aufbau des Shops verändert um beispielsweise die Kundenführung zu verbessern. Dann kann es vorkommen, dass etwa mehrere Einzelprodukte in ein variables Produkt zusammengefasst werden.

Hat das "alte" Produkt dann eine Bewertung, möchte man diese natürlich in das neue Produkt mit übernehmen. Nur: Wie kann man eigentlich Bewertungen in WooCommerce-Produkten von einem Produkt in ein anderes übertragen?

Technischer Hintergrund: Bewertungen sind auch nur Kommentare

Aus technischer Perspektive sind WooCommerce-Bewertungen auch nur WordPress-Kommentare. Sie werden in der Datenbank genau wie Kommentare auf Blogbeiträgen oder Seiten abgespeichert. Sie landen in der Datenbank-Tabelle "wp_comments". Zusätzlich werden noch sogenannte "Metainformationen" für das Kommentar angelegt, um die Anzahl der Sterne abzuspeichern. Diese Informationen finden sich in der Tabelle "wp_commentmeta".

Bewertungen mittels Plugin verschieben

Datenbank, Tabelle, Bahnhof? Klingt alles sehr technisch und kompliziert? Der große Vorteil: WooCommerce-Bewertungen lassen sich auch fast genau so wie Kommentare von Blogbeiträgen verschieben. Und dafür gibt es einige Plugins im WordPress-Repository. Ein wirklicher "Plugin-Sieger" sticht nicht heraus, aber ein Beispiel ist "Copy or Move Comments".

Spezifisch für WooCommerce-Bewertungen gibt es auch ein kostenpflichtiges Plugin. Das schlägt mit - zum Zeitpunkt der Entstehung dieses Blogs-Posts - rund 19 USD zu Buche. Weshalb sich dieses Plugin lohnen kann, wird spätestens im übernächsten Absatz klar. Denn leider ist der Job mit der einfachen "Verschiebung" von Kommentaren nicht erledigt. Das Plugin selbst habe ich aber nicht ausprobiert, es ist aber vermutlich die einfachste Alternative für technisch wenig versierte Nutzer.

Bewertungen und Kommentare direkt in der Datenbank verschieben

Wer sich technisch etwas auskennt, kann die Bewertungen auch direkt in der Datenbank verschieben. Dazu benötigen wir die ID des entsprechenden Kommentars (der Bewertung) sowie die ID des zukünftigen Produkts.

Wichtig: Änderungen an der Datenbank sollten nur Personen mit mindestens einem Grundverständnis der Technik vornehmen. Falsche Änderungen in der Datenbank können massive Fehler - bis zum Ausfall der Webseite - hervorrufen.

Die ID des Kommentars bzw. der Bewertung finden wir am einfachsten im Backend unter "Kommentare" heraus. Bearbeiten wir ein Kommentar, so wird die ID als GET-Parameter in der Browserzeile angezeigt. Oder natürlich direkt im Permalink 😉

Die ID des Kommentars wird in der Browserzeile angezeigt

Nach der ID suchen wir in der Tabelle "wp_comments". In der Spalte "comment_post_ID" wird die ID des neuen Produkts eingetragen. Wichtig: Gibt es auf eine Bewertung eine oder mehrere Antworten (also Kommentare als Antwort), so müssen auch in diesen Einträgen die Fremdschlüssel in der Spalte comment_post_ID aktualisiert werden.

Problem: Anzahl der Bewertungen, Bewertungsdurchschnitt, Bewertungsstruktur aktualisieren sich nicht

Leider war das nur die halbe Miete. Wer jetzt die Seite des neuen Produkts aktualisiert, wird feststellen, dass sich die Zahl der Bewertungen nicht verändert hat. Hat da etwas nicht geklappt? Vermutlich schon, denn die Bewertung wird tatsächlich im neuen Produkt angezeigt.

WooCommerce speichert aber die Anzahl der Bewertungen unabhängig von der Zahl der "tatsächlichen" Bewertungen fest ab. Das hat mehrere Gründe: Zum einen wird die Webseite dadurch performanter (es muss nicht jedes Mal die Zahl der Bewertungen berechnet werden). Zum anderen gibt es auch noch weitere "Metriken" wie die durchschnittliche Bewertung sowie die Verteilung der Bewertungen (10x 5 Sterne, 8x 4 Sterne, usw.). Müsste das System bei jedem Seitenaufruf all diese Berechnungen anstellen, so wäre es schlicht langsamer. Und schließlich mag niemand einen langsamen Online-Shop. Randbemerkung für alle technisch Versierten: Ja, mit Caching kann man dem Problem natürlich begegnen - und ja, ob ein Datenbank-Aufruf der Meta-Informationen effizienter ist als ein einmaliger Aufruf aller Bewertungen des Produkts und eine anschließende Berechnung in PHP sei dahin gestellt.

Wir müssen also die Zahl der Bewertungen, die durchschnittliche Bewertung sowie die Bewertungsstruktur noch aktualisieren. Diese Informationen werden als Meta-Informationen zum eigentlichen Produkt abgespeichert. Wir benötigen also wieder die ID des Produkts. Anschließend suchen wir in der Tabelle "wp_postmeta" nach der entsprechenden "post_id". Letztlich aktualisieren wir dann die "meta_key"-s mit den Schlüsseln "_wc_rating_count", "_wc_review_count" und "_wc_average_rating". Die entsprechenden Neuberechnungen muss man leider von Hand anstellen - außer man schreibt sich ein passendes Skript.

Die Anzahl der Bewertungen, der Bewertungsdurchschnitt sowie die Bewertungsstruktur müssen von Hand angepasst werden - sie sind in den Produkt-Metadaten abgespeichert

Doch nicht so einfach: Anzahl der Bewertungen, Bewertungs-Durchschnitt und

Fazit: Alles doch nicht so einfach...

Wer technisch versiert ist, kann sich auch selbst an die entsprechenden Änderungen in der Datenbank machen. Normale "Endanwender" tun sich vermutlich einen Gefallen, wenn sie entweder einen Experten beauftragen (Ich kann das für Sie erledigen) oder auf das (von mir nicht getestete) Plugin setzen. Mit einer einfachen Verschiebung von Kommentaren ist es leider nicht getan.

Kommentare

Schreibe einen Kommentar

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

Sie haben Fragen oder möchten ein Angebot anfordern?

Jetzt Kontakt aufnehmen
crosslist