Nach der Aktualisierung eines digitalen Produkts in WooCommerce erhielt die Version in der Standardsprache die aktuelle ZIP-Datei. In den Übersetzungen blieb jedoch weiterhin der Link zur vorherigen Version bestehen. Auch nach dem Hinzufügen einer zweiten Datei änderte sich die Situation nicht: Im Hauptprodukt wurden zwei Dateien angezeigt, in den anderen Sprachversionen dagegen nur eine.
Das Problem konnte ohne Bearbeitung der Datenbank, ohne Löschen der Übersetzungen und ohne zusätzlichen PHP-Code gelöst werden. Entscheidend war die Änderung der Bearbeitungsmethode für übersetzte Produkte in WPML.
Konfiguration der Website
Auf der Website wurden folgende Komponenten verwendet:
- WordPress;
- WooCommerce;
- WPML Multilingual CMS;
- WPML Multilingual & Multicurrency for WooCommerce in Version 5.5.6;
- ein einfaches digitales Produkt mit den Optionen
VirtualundDownloadable; - Polnisch als Standardsprache;
- Übersetzungen ins Englische, Deutsche, Französische, Ukrainische und weitere Sprachen.
Für alle Sprachversionen sollte derselbe Dateisatz verwendet werden.
Wie sich das Problem zeigte
In der polnischen Standardversion des Produkts wurde die aktuelle Datei hinzugefügt:
aroks-elementor-telegram-1.0.4-gxv3r1.zip
In den übersetzten Produkten blieb jedoch weiterhin der Link zur alten Version bestehen:
aroks-elementor-telegram-gdpq0t.zip
Zunächst konnte dies wie ein Cache-Problem mit der alten URL wirken. Nachdem dem Standardprodukt eine zweite Datei hinzugefügt worden war, wurde jedoch deutlich, dass das Problem die gesamte Liste der herunterladbaren Dateien betraf:
- im polnischen Produkt waren zwei Dateien vorhanden;
- in den übersetzten Produkten blieb nur eine Datei vorhanden;
- Name und URL dieser Datei entsprachen der alten Version.
Die Übersetzungen erhielten somit nicht die aktuelle Struktur der herunterladbaren Dateien.
Was im Produkteditor sichtbar war
In der Standardversion des Produkts konnten folgende Änderungen vorgenommen werden:
- Dateinamen ändern;
- neue URLs eintragen;
- weitere Dateien hinzufügen;
- Downloadlimit und Gültigkeitsdauer verwalten.
In den übersetzten Versionen waren die entsprechenden Felder gesperrt. Daneben wurden Schlosssymbole angezeigt, und WPML empfahl, das Produkt über den Übersetzungseditor zu bearbeiten.
Die Sperrung selbst ist kein Fehler. Sie bedeutet, dass diese Einstellungen vom Standardprodukt übernommen werden sollen. Das eigentliche Problem bestand darin, dass die Daten nicht aktualisiert wurden.
Überprüfung der WPML-Einstellungen
Im Bereich:
WooCommerce → WPML Multilingual & Multicurrency → Settings
war im Abschnitt Products Download Files die folgende Option aktiviert:
Use the same files for translations
Dies ist die richtige Einstellung, wenn alle Sprachversionen eines Produkts denselben Dateisatz für Käufer bereitstellen sollen.
Die folgende Option:
Add separate download files for translations when translating products
wurde nicht verwendet.
Auch im Produkt selbst war die folgende Option deaktiviert:
Use custom settings for translations download files
Die Konfiguration sah somit keine separaten Dateien für einzelne Sprachen vor.
Was vor dem Wechsel des Editors geprüft wurde
Aktualisierung des Standardprodukts
Das Hauptprodukt wurde nach dem Ersetzen der Datei erneut gespeichert. Die Übersetzungen erhielten die neue URL dennoch nicht.
Hinzufügen einer zweiten Datei
Der polnischen Version wurde eine weitere Datei hinzugefügt. Auch diese erschien nicht in den übersetzten Produkten.
Dieser Test zeigte, dass das Problem nicht nur einen veralteten Link betraf. WPML aktualisierte den gesamten Dateisatz nicht.
Überprüfung der Plugin-Version
Auf der Website wurde WPML Multilingual & Multicurrency for WooCommerce in Version 5.5.6 verwendet. Eine veraltete Plugin-Version war daher nicht die Ursache.
Erneutes Speichern der Einstellungen
Die Option zur Verwendung derselben Dateien für alle Übersetzungen war bereits aktiviert. Ein erneutes Speichern der Einstellungen änderte die Situation nicht.
WPML-Übersetzungseditor
Die Übersetzungen wurden über den WPML-Editor geöffnet, der mit einem Stiftsymbol gekennzeichnet war. Auch das erneute Abschließen der Übersetzung aktualisierte die Dateiliste nicht.
Lösung
Im Bereich Translations wurde der Bearbeitungsmodus vom WPML-Editor auf den standardmäßigen WordPress-Editor umgestellt.
In dieser Benutzeroberfläche gilt:
- das Stiftsymbol öffnet den WPML-Übersetzungseditor;
- das WordPress-Symbol öffnet den standardmäßigen WordPress-Beitragseditor.
Nach der Umstellung wurden die Sprachversionen des Produkts im normalen Editor geöffnet und erneut gespeichert.
Danach:
- erschien die aktuelle Datei in den Übersetzungen;
- wurde der alte Link ersetzt;
- wurde auch die zweite Datei angezeigt;
- war der Dateisatz in allen Sprachversionen identisch.
Änderungen an der Datenbank oder zusätzliche Code-Snippets waren nicht erforderlich.
Warum der Wechsel des Editors geholfen haben könnte
WooCommerce speichert herunterladbare Dateien nicht als Bestandteil der Produktbeschreibung. Sie werden als separate strukturierte Metadaten gespeichert, die folgende Informationen enthalten:
- Dateiname;
- URL;
- interne Kennung;
- Reihenfolge der Dateien.
Sie sind mit dem folgenden WooCommerce-Metafeld verknüpft:
_downloadable_files
Der WPML-Editor dient hauptsächlich zur Übersetzung sprachabhängiger Inhalte:
- Produktname;
- Beschreibung;
- Kurzbeschreibung;
- Attribute;
- andere Textfelder.
Technische WooCommerce-Daten werden über separate Mechanismen von WPML Multilingual & Multicurrency for WooCommerce synchronisiert.
In diesem Fall aktualisierte das erneute Abschließen der Übersetzung im WPML-Editor die Metadaten der Downloads nicht. Nach dem Wechsel zum standardmäßigen WordPress-Editor und dem erneuten Speichern des Produkts verarbeitete das System dessen technische Einstellungen erneut.
Dies ist eine technische Interpretation des beobachteten Ergebnisses. Ohne Analyse der Protokolle und des Codes der konkreten Website lässt sich nicht eindeutig feststellen, welcher interne WPML-Prozess die Synchronisierung ausgelöst hat.
Schritt-für-Schritt-Lösung
-
Standardversion des Produkts prüfen.
Öffnen Sie das Produkt in der Standardsprache und stellen Sie sicher, dass die Option
Downloadableaktiviert ist, alle Dateien hinzugefügt wurden und ihre Namen sowie URLs korrekt sind. Klicken Sie anschließend aufUpdate. -
Dateieinstellungen in WPML prüfen.
Gehen Sie zu
WooCommerce → WPML Multilingual & Multicurrency → Settings. Wählen Sie im AbschnittProducts Download Filesdie OptionUse the same files for translationsund speichern Sie die Einstellungen. -
Individuelle Produkteinstellungen prüfen.
Die Option
Use custom settings for translations download filessollte deaktiviert sein, wenn in allen Sprachversionen dieselben Dateien verwendet werden sollen. -
Übersetzungseditor wechseln.
Wählen Sie im Bereich
Translationsden standardmäßigen WordPress-Editor anstelle des WPML-Editors. -
Sprachversionen erneut speichern.
Öffnen Sie jedes übersetzte Produkt und klicken Sie auf
Update. Die Dateifelder können weiterhin gesperrt bleiben, wenn sie von der Standardversion verwaltet werden. -
Ergebnis prüfen.
Vergleichen Sie die Anzahl der Dateien, ihre Namen, URLs, Downloadlimits, Gültigkeitsdauer der Links, Preise und Veröffentlichungsstatus.
Überprüfung älterer Bestellungen
Eine Produktaktualisierung ändert nicht immer automatisch die Downloadberechtigungen in bereits vorhandenen Bestellungen.
Dies ist besonders wichtig, wenn:
- die alte Datei gelöscht und erneut hinzugefügt wurde;
- dem Produkt eine neue zweite Datei hinzugefügt wurde;
- sich die interne Kennung des Dateieintrags geändert hat.
Kunden, die das Produkt bereits früher gekauft haben, erhalten möglicherweise nicht automatisch Zugriff auf die neue Datei.
Nach der Aktualisierung empfiehlt es sich:
- eine ältere Testbestellung zu öffnen;
- die für den Käufer verfügbaren Downloads zu prüfen;
- bei Bedarf die Downloadberechtigungen erneut zu erteilen;
- die alte Datei erst nach Abschluss der Tests vom Server zu entfernen.
Es ist sicherer, die URL in einer bereits vorhandenen Dateizeile zu ändern, als ohne Notwendigkeit einen neuen Eintrag zu erstellen.
Wann diese Lösung möglicherweise nicht ausreicht
Der Wechsel des Editors kann wirkungslos bleiben, wenn:
- die Sprachversionen des Produkts ihre Verknüpfung verloren haben;
- für Übersetzungen separate Dateien konfiguriert wurden;
- sich Produktduplikate in der Datenbank befinden;
- die Metadaten einer bestimmten Übersetzung beschädigt sind;
- ein Drittanbieter-Plugin die Synchronisierung beeinflusst;
- die Daten nach jedem Speichern erneut überschrieben werden.
In diesem Fall sollten die Werte von _downloadable_files im Standardprodukt und in den Übersetzungen verglichen werden.
Vor einer manuellen Synchronisierung muss eine Sicherungskopie der Datenbank erstellt werden. Bei einem einzelnen Produkt ist es sicherer, ein einmaliges PHP-Skript mit konkreten Produkt-IDs zu verwenden, als einen Massen-SQL-Befehl für die gesamte Tabelle postmeta auszuführen.
Fazit
In diesem Fall enthielt das Standardprodukt den aktuellen Dateisatz, die übersetzten Versionen erhielten die Änderungen jedoch nicht bei der Bearbeitung über den WPML-Editor.
Der Wechsel zum standardmäßigen WordPress-Editor und das erneute Speichern der Sprachversionen stellten die Synchronisierung wieder her. Das Problem konnte dadurch ohne Löschen der Übersetzungen, ohne direkte Bearbeitung der Datenbank und ohne zusätzlichen Code gelöst werden.
