Zum Inhalt springen Zur Seitenleiste springen

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.

Schlagwörter: 

Dieses Thema enthält 2 Antworten, hat 0 Stimmen.

Zuletzt aktualisiert von Lucas Vidal de Andrade Vor 1 Woche, 3 Tagen.

Assistiert von: Lucas Vidal de Andrade.

Autor Beiträge
Februar 18, 2026 um 10:11

Markus

Hallo WPML Support-Team,

ich habe ein Problem mit WPML und WooCommerce in Verbindung mit der String-Übersetzung und benutzerdefinierten Produkt-Permalinks.

Setup:
WPML mit WooCommerce Multilingual
Benutzerdefinierte Produkt-Permalink-Basis:
- Deutsch: /produkte/%product_cat%/
- Englisch: /products/%product_cat%/ (über String Translation gesetzt)
Es gibt sowohl WooCommerce-Produkte als auch ganz normale WordPress-Seiten mit ähnlicher URL-Struktur.

Problem:
Normale Seiten (also keine Produkte!) mit URLs wie
versteckter Link
- führen auf einen 404-Fehler, obwohl die englische Seite existiert, veröffentlicht ist und der Permalink korrekt gesetzt ist.
- Das Problem tritt nur auf, wenn WPML String Translation aktiv ist und die Produktbasis übersetzt wurde.
- Wenn ich WPML String Translation deaktiviere, funktioniert die englische Seite problemlos.
- Ich habe Slug-Konflikte, Veröffentlichungsstatus, Permalink-Einstellungen und den Cache überprüft. Es gibt keine Produkte oder Kategorien mit dem gleichen Slug.

Zusätzliche Infos:
- Die Übersetzung der WooCommerce-Produktbasis funktioniert, scheint aber auch normale Seiten, die mit /products/ beginnen, zu beeinflussen.

Meine Fragen:
- Gibt es eine Möglichkeit, dass die übersetzte Produktbasis nicht die normalen WordPress-Seiten mit gleicher Basis beeinflusst?
- Ist dieses Verhalten so beabsichtigt oder handelt es sich um einen Fehler?
- Was empfehlt Ihr als Best Practice, damit sowohl Seiten als auch Produkte unter /products/… ohne 404-Probleme funktionieren?

Bereits getestete Lösungsansätze:
- Slugs auf Konflikte geprüft (keine vorhanden)
- Permalinks neu gespeichert
- Caches geleert
- Alle Plugins und WPML-Module aktualisiert
- Mit Standard-Theme getestet
- Alle anderen Plugins (außer WooCommerce und WPML) deaktiviert

Wir haben ein Testsystem für das problem aufgesetzt, gerne kann ich dafür den Zugang bereitstellen.

Vielen Dank für eure Unterstützung!
Freundliche Grüße
Mubasher

Februar 18, 2026 um 13:49 #17832772

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+01:00)

Hallo,

ich habe Ihr Ticket an unseren 2nd-Tier-Support eskaliert. Sie werden es analysieren und nach einer Lösung suchen.

Sobald ich eine Rückmeldung von ihnen habe, informiere ich Sie. Vielen Dank für Ihre Geduld.

Februar 23, 2026 um 11:15 #17842547

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+01:00)

Hallo,

vielen Dank für Ihre Geduld. Bevor ich die Lösung bereitstelle, möchte ich nur klarstellen, dass die von Ihnen implementierte Lösung – entgegen dem, was ich im Chat gesagt habe – tatsächlich Teil dessen ist, was WPML unterstützt, und funktionieren sollte. Ich hatte Ihre Implementierung anfangs nicht richtig verstanden; entschuldigen Sie bitte das Missverständnis.

Nun zur Lösung: Das Problem entsteht, weil einige notwendige WooCommerce-Regeln in Ihrem spezifischen Fall in der zweiten Sprache nicht angewendet werden, wodurch der Fehler auftritt. Um das zu beheben, erstellen Sie bitte ein vollständiges Backup Ihrer Website und folgen Sie diesen Schritten:

1. Fügen Sie den folgenden Code zur Datei functions.php Ihres Themes hinzu:

add_filter( 'rewrite_rules_array', function ( array $rules ): array {
	$cloned = [];
	foreach ( $rules as $regex => $query ) {
		if ( strpos( $regex, 'produkte/' ) === 0 && strpos( $query, 'pagename=produkte/' ) !== false ) {
			$new_regex = preg_replace( '#^produkte/#', 'products/', $regex, 1 );
			$new_query = str_replace( 'pagename=produkte/', 'pagename=products/', $query );

			$cloned[ $new_regex ] = $new_query;
		}
	}
	return $cloned + $rules;
}, 100 );

2. Nehmen Sie im Original (Ausgangssprache) eine kleine Änderung an der Seite vor, die das Problem hat, und speichern Sie. Dadurch wird die oben genannte Änderung angewendet.

3. Öffnen Sie die Übersetzung und speichern Sie sie erneut;

4. Wiederholen Sie die Schritte 2 und 3 für andere Seiten, die das Problem ebenfalls haben.

Das sollte es lösen 🙂 Sagen Sie mir, wie es gelaufen ist.