[Gelöst] WooCommerce: Reviews zu einem anderen Produkt übertragen
Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.
Problem: Der Kunde möchte Bewertungen von einem WooCommerce-Produkt mit 9 Varianten auf drei separate Produkte mit jeweils 3 Varianten aufteilen und sicherstellen, dass die WPML/WCML-Übersetzungen der Bewertungen erhalten bleiben.
Lösung: Für die erste Methode, die Änderung der
comment_post_ID
in der Datenbank, bestätigen wir, dass dies möglich ist, da die Kommentar-ID und die Produkt-ID im Stringnamen verwendet werden, aber nicht Teil des String-Pakets sind. Wir empfehlen, dies zuerst manuell in der Datenbank zu testen.
Die zweite Methode, das Duplizieren der Bewertungen mit
wp_insert_comment
und das anschließende Löschen der alten Bewertungen, sollte ebenfalls funktionieren. Auch hier raten wir dazu, eine kleine Datenmenge manuell zu testen, bevor ein Skript ausgeführt wird, um mögliche Probleme zu identifizieren und zu lösen.
Wenn diese Lösung nicht relevant erscheint, öffnen Sie bitte ein neues Support-Ticket im WPML-Support-Forum.
Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.
Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.
Sagen Sie uns, was Sie versuchen zu erreichen?
Ich versuche es mal beispielhaft zu erklären.
Wir haben ein variables Produkt in WooCommerce.
Es hat 9 Varianten.
Wir möchten aus diesem einen Produkt nun 3 Produkte machen.
Also 3 variable Produkt mit jeweils 3 Varianten anstatt dem einen Produkt mit 9 Varianten.
Das bestehende Produkt mit 9 Varianten hat bereits viele Bewertungen.
Die Bewertungen müssen nun zu dem neuen Produkt übertragen werden, zu dem sie gehören.
Das heißt: die über die Zeit gesammelten Bewertungen teilen sich auf.
Idee 1 - comment_post_ID ändern
Instinktiv würde ich nun ein kleines PHP-Code-Snippet bauen, das alle betroffenen Reviews aus der WordPress-Datenbank abruft und die comment_post_ID auf die neue Produkt-Id ändert.
Anschließend können wir einmal den review_count und average_rating von den Produkten neu kalkulieren lassen.
Das sollte kein Problem sein.
Was mir eher sorgen macht, sind die Übersetzungen der Reviews von WCML.
Die Übersetzungen der Reviews werden in der string translation table gespeichert.
Vermutlich werden sie alle nicht mehr funktionieren, weil die package names an die Prdukt-id gebunden sind.
Idee 2 - Reviews duplizieren und Alte löschen
Andere Idee, die ich hatte: Eine kleine PHP-Funktion bauen, die die Reviews abruft und mit wp_insert_comment einfach neu anlegt für die neu erstellten Produkte.
Quasi wie eine Kopie.
Die alten Reviews können anschließend gelöscht werden.
Dann müsste WCML die neuen Reviews direkt in die string translation einfügen und durch translation memory automatisch übersetzen?
Gedanklich bin ich bei sowas in der Art.
Nur eben für Kommentare: versteckter Link
Eure Empfehlung
Wie können wir eurer Meinung nach Reviews zu einem anderen Produkt verschieben, ohne Probleme mit WPML/WCML und den Übersetzungen zu bekommen?
Ich brauche keine komplette Anleitung mit fertigem PHP-Code, falls ihr die nicht zufällig direkt irgendwo rumliegen habt.
Mir würde eine Idee/Herangehensweise mit ein paar Tipps zu möglichen Fehlern vermutlich ausreichen.
Vielleicht habt ihr auf Stufe 2 oder höher einen Entwickler, der Tipps geben kann.
Wir werden vermutlich nicht die ersten sein, die ein variables Produkt splitten und sich nun Fragen, wie wir mit den Review-Übersetzungen umgehen sollen.
Folgen Sie einer Dokumentation?
Nein. Habe auf der WPML-Seite keine Infos dazu gefunden.
Gibt es ein ähnliches Beispiel, das wir sehen können?
Vermutlich nicht.
Wir sind nach den Weihnachtstagen wieder erreichbar.
Dir und euch eine gute Zeit, bis dahin.
mir persönlich gefällt die 2. Methode hier besser, ich kläre es jedoch nochmal mit unserem Team ab, ob hier ggf. eine andere Lösung besser wäre. Ich melde mich, sobald ich eine Rückmeldung dazu erhalte (wahrscheinlich ab Dienstag).
Ich wünsche Ihnen schon einmal erholsame Feiertage!
Für die erste Methode liegen sie richtig. Wie wir sehen können, werden sowohl die Kommentar-ID als auch die Produkt-ID im Stringnamen verwendet. Allerdings ist diese nicht Teil des String-Pakets, sodass die Änderung der String-Name in der String-Tabelle funktionieren kann, aber dies ist nicht getestet. Wir empfehlen, dies zuerst zu testen, indem Sie dies manuell in der DB tun.
Bei der zweiten Methode sollte das mit Sicherheit funktionieren.In jedem Fall würden wir vorschlagen, eine kleine Datenmenge manuell zu testen, bevor Sie das Skript ausführen, damit wir prüfen können, ob es Probleme gibt, und eine Lösung vorschlagen können.
danke für die Rückmeldung.
Dann probieren wir variante #2 mit wp_insert_comment() und legen via Code eine Kopie an.
Geplante Vorgehensweise ist nun:
1.) Neues Review erstellen mit wp_insert_comment() - (existierendes Review mit allen meta-Angaben kopieren)
2.) Altes Reviews mit meta-Angabe flaggen, wenn Kopie erfolgreich erstellt
3.) Alle neuen Reviews übersetzen (lassen)
4.) Wenn alles übersetzt ist, die alten (geflaggten) reviews aus der DB löschen mit wp_delete_comment()
Alles nach und nach mit Cronjob migrieren.
Bin zuversichtlich.
Danke für deinen Input.
Probieren wir beim nächsten Launch aus.