Skip Navigation

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: 

This topic contains 13 Antworten, has 2 Teilnehmer.

Last updated by Christian Vor 1 Woche, 5 Tage.

Assigned support staff: Andreas W..

Author Artikel
April 28, 2021 um 7:34 pm #8648105

Christian

Hallo,

ich habe ein Multisite WordPress laufen, wo die Domains hidden link und hidden link laufen. Beide Domains haben die zuvor genannte jeweilige Site URL und abweichend davon eine Home URL hidden link und hidden link. Es soll jetzt jeweils unter /en/ die englische Version erreichbar sein. Bei hidden link funktioniert dies auch, bei hidden link allerdings nicht (immer 404 Seite, weil "en" nicht gefunden wird).

In WPML -> Sprachen -> Sprach-URL-Format sieht man bei der nicht funktionierenden Site, das unter "Sprachen als Verzeichnisse anzeigen" die Site URL und nicht die Home URL verwendet wird (siehe angehängte Grafik). Bei der funktionierenden Site steht dort die Home URL, was korrekt ist.

Ich vermute daher, das es mit dieser falschen Einstellung zusammen hängt, sehe aber nicht, wie man das ändern kann. Wenn ich auf "Sprachname als Parameter hinzufügen" umstelle, dann funktioniert die URL, weil dort die Home URL steht. Also vermute ich, das das Problem durch die Nutzung der Site URL entsteht.

Wie kann ich die Home URL auch bei "Sprachen als Verzeichnisse anzeigen" eintragen? Zur Not auch gerne, wo ich es in der Datenbank und/oder Source anpassen kann.

Vielen Dank für die Hilfe!

correct_url.jpg
wrong_url.jpg
April 29, 2021 um 7:14 am #8650969

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo,

Die URLs sollten eigentlich in der Datentablle wp_options zu finden sein.

Was ist denn unter Dashboard -> Einstellungen -> Allgemein eingestellt?

Gibt es eventuell einen Eintrag in der wp-config.php Datei, der die URL umschreibt?

https://wordpress.org/support/article/changing-the-site-url/

Ich kann gerne anbieten einen Blick darauf zu werfen. Erteilen Sie mir dazu bitte Zugriff als Admin. Das private Antwortformular ist aktiviert.

Mit freundlichen Grüßen
Andreas

April 29, 2021 um 2:48 pm #8655527

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo,

Was ich hier momentan nicht ganz verstehe, ist wie die Blog-Seite erstellt wurde. Ich sehe Sie verwenden die Einstellung, dass die letzten Beiträge auf der Homepage angezeigt werden sollten, weshalb unter Dashboard -> Seiten keine Blog-Seite besteht, die WPML übersetzen kann.

Im Grunde sehe ich, dass das Problem alleine an der Blogseite liegt und nicht etwa an der URL-Struktur, wie hier zu sehen:

hidden link

Ich war davon ausgegangen, dass hier der Theme Customizer verwendet wird, um diese Blogseite zu gestalten, allerdings sehe ich hier einen Error:

Non-existent changeset UUID.

Was ich hier im Grunde empfehlen würde, wäre zu probieren unter Dashboard -> Einstellungen -> Lesen die Option "Eine statische Seite (unten auswählen)" zu verwenden und einen tatsächliche Seite für den Blog anzulegen, die sie dann mit WPML wie jede andere Seite übersetzen können.

Sollte dies keine annehmbare Lösung darstellen, müsste ich versuchen dieses Problem auf einem Test-Server nachzustellen und intern eskalieren.

Geben Sie mir bitte diesbzüglich Bescheid. Es könnte auch sein, dass ich hierzu von Ihnen das Theme in aktueller Version benötige, da das Problem mit diesem zusammenhängen könnte.

Mit freundlichen Grüßen
Andreas

April 29, 2021 um 3:11 pm #8655699

Christian

Hallo,

danke für die Rückmeldung. Ich werde mir das morgen mal anschauen.

Nur noch einmal von meiner Seite ergänzt:

hidden link -> das ist ein Typo3 System und nicht WordPress. Die eigentliche Website liegt nicht in WordPress. Die URL's sind hidden link (die geht) und hidden link (die nicht geht). Es geht also immer um den Subpath "/blog" und erst da hinter "en".

Ändert das etwas an ihrer vorherigen Aussage?

Weil mich wundert, das es bei "hidden link" und "hidden link" geht.

Und wo kommt es her, das beim n2pdf Blog unter "WPML -> Sprachen -> Sprach-URL-Format" bei der Auswahl "Sprachen als Verzeichnisse anzeigen" nicht die Home URL genommen wird, sondern die Site-URL? Bei der Option " Sprachname als Parameter hinzufügen" steht die richtige Home URL, nur oben nicht.

Bei dem webPDF Blog ist das im Gegensatz dazu bei beiden Optionen korrekt. Kann man das beeinflussen, welche URL er nimmt?

Vielen Dank!
Mfg
Bernd Engelhardt

April 30, 2021 um 4:58 am #8659539

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo Bernd,

Ich bin hier momentan überfragt, wie ich dieses Problem nachstellen könnte.

Es ist möglich, dass es sich um ein Kompatilbitätsproblem zwischen WPML und einem anderen Plugin, wie zum Beispiel "SVD URL replace" handelt.

Könnten Sie eventuell ein Staging aufsetzen, auf dem wir ein Debug durchführen können?

Ich leite das Problem dann gerne an unseren Second Tier Support weiter.

Mit freundlichen Grüßen
Andreas

April 30, 2021 um 5:15 am #8659619

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo,

Es könnte sein dass hidden link als Beispiel einfach eine ungeeignete URL-Struktur ist, denn WPML legt das SPrachverzeichnis immer direkt hinter der Domain an.

Deshalb funktioniert es auch auf hidden link aber nicht auf hidden link da diese URL wie folgt aufgelöst werden sollte:

hidden link

Ich empfehle nochmals die Einstellung statische Homepage zu verwenden und eine Seiten für den Blog anzulegen, die Sie dann mit dem WPML Übersetzungseditor übersetzen und sie können dann einen 301 Redirect von der Hoepage auf die Blogseite veranlassen.

Mit freundlichen Grüßen
Andreas

Mai 3, 2021 um 8:12 am #8673435

Christian

Hallo Andreas,

wir haben ihren Code untersucht und zwei Stellen gefunden, die die Probleme verursachen. Wir haben den Code entsprechend angepasst, um es in einer Multisite zu benutzen, wo alles auf Subdomains basiert (mit Subpath(!)) und getrennten Domains für „Site“ und „Home“ URL.

Anbei finden sie die beiden angepassten Routinen und eine Erklärung, was nicht ging bzw. wie es korrigiert wurde. Wir würden uns sehr freuen, wenn sie sich das selbst einmal anschauen und überlegen, ob es nicht in ihre Entwicklung übernommen werden sollte.
Wir haben folgende Situation:

Site 1 (Main WordPress Site):
- Site URL: hidden link
- Home URL: hidden link
Site 2:
- Site URL: hidden link
- Home URL: hidden link
Site 3:
- Site URL: hidden link
- Home URL: hidden link

Die jeweiligen Domains hidden link, hidden link und hidden link sind in ein Typo3 System. Der Path „/blog“ wird nach WordPress geleitet, daher die jeweilige Home URL.

Die Domains der Homt-URL sind auch die jeweiligen Domains des deutschsprachigen Blog: hidden link, hidden link und hidden link. Für die englische Version wird jeweils „/en“ angehangen, also hidden link, hidden link und hidden link.

Für die Main-Site in WordPress, also hidden link funktioniert alles wunderbar, also hidden link und hidden link kann aufgerufen werden.
Bei WPML -> Support wird auch kein Fehler angezeigt und bei „WPML -> Sprachen -> Sprach-URL-Format“ wird auch jeweils die Home-URL angezeigt (was korrekt ist).

Bei Site 2 und Site 3 kommt es aber zu einem Problem: Es wird bei „WPML -> Support -> REST aktiviert = NEIN (!)“ angezeigt und bei „WPML -> Sprachen -> Sprach-URL-Format“ wird die „Site URL“ statt der „Home URL“ verwendet. Also z.B. bei Site 2) steht dort „hidden link statt „hidden link und „hidden link statt „hidden link.

Dies führt dazu, das im Frontwnd die englische Version der Site 2 und Site 3 nicht aufgerufen werden, also z.B. hidden link und hidden link.

Auf Grund des Setup mit unterschiedlichen URL für die „Site URL“ und „Home URL“ kommt es u.a. zu CORS Problemen (REST API) bzw. Nutzung der falschen URL im Source.

Die „REST API“ kann nicht verwendet/geprüft werden, weil ein CORS Problem auftritt, weil nicht die korrekte URL der jeweiligen Domains bei Multi-Site genommen wird, sondern immer auf die Domain der Main-Site zurückgegriffen wird.

Nach einer Analyse des WPML Plugin Codes konnten wir das Problem der deaktivierten REST API auf eine falsche Nutzung der wordpress Funktion get_rest_url zurückführen. Hier wird get_rest_url("/") mit Pfad aufgerufen, welche jedoch wie folgt definiert ist:

get_rest_url( int|null $blog_id = null, string $path = '/', string $scheme = 'rest' )

Dies führt bei einem Multisite Setup natürlich zu Problemen. Hier sollte entweder die Funktion rest_url genutzt werden oder get_rest_url ohne Pfad:

…\sitepress-multilingual-cms\classes\REST\Status.php (line: 74)

…
// $url = get_rest_url("/");
// Ersetzt durch:
$url = rest_url("/");
…

Das Problem der 404 Fehler in den URLs konnten wir auf die Funktion get_abs_home zurückführen. Hier wird für die URL Bildung das „domain“ Feld der „wp_blogs“ Tabelle genutzt. Besser wäre es bei einem Multisite-Setup, die jeweilige Home URL der Seite zu nutzen, um deren Home URL zu bestimmen. Also die Option „home“ der „wp_X_options“ Tabellen:

…\sitepress-multilingual-cms\classes\url-handling\converter\helper\class-wpml-url-converter-url-helper.php (line 48)

…
// $protocol = preg_match( '/^(https)/', get_option( 'home' ) ) === 1 ? '<em><u>hidden link</u></em>' : '<em><u>hidden link</u></em>';
// $sql      = "
//    SELECT CONCAT(b.domain, b.path)
//    FROM {$this->wpdb->blogs} b
//    WHERE blog_id = {$this->wpdb->blogid}
//    LIMIT 1
//";
//$this->absolute_home = $protocol . $this->wpdb->get_var( $sql );
// Ersetzt durch:
$sql = "
   SELECT CONCAT(o.option_value)
   FROM {$this->wpdb->options} o
   WHERE option_name = 'home'
   LIMIT 1
";
$this->absolute_home = $this->wpdb->get_var( $sql );

Das gesamte Problem tritt nur auf, wenn man ein Multi-Site Setup hat und dann auch noch abweichende URL bei „home“ und „site“. In diesem Fall muss je nach Site immer die geänderte URL (der jeweiligen Site) genommen werden. Man darf nicht bei einer Multi-Site immer auf die URL der Main Site zurückgreifen, sondern auf die jeweils in den Sites definierten URL’s und dort, wenn abweichend, auch auf die Home URL, wenn diese sich von der Site URL unterscheidet.

Ich hoffe, das alles verständlich ist und wir einen Beitrag zu Verbesserung bringen konnten. Wir würden uns sehr freuen, wenn diese Anpassungen in WPML einfliessen können, damit wir weiterhnin automatisch updaten können.

Mit freundlichen Grüßen
Bernd Engelhardt

Mai 5, 2021 um 8:15 am #8691203

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo Bernd,

Vielen Dank für die ausführliche Nachricht.

Ich konsultiere diesbezüglich unseren Second Tier Support und werde mich melden, sobald ich nähere Informationen habe, da ich persönlich hier unklar darüber bin, ob WPML das vorliegende Szenario unterstützen sollte oder ob es hier einem neuen Features bedarf.

Mit freundlichen Grüßen
Andreas

Mai 7, 2021 um 9:35 am #8712159

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo,

Wir sehen nun, dass der englische Blog auf allen Sites erreichbar ist.

Benötigen Sie hier noch weitere Unterstützung?

Mit freundlichen Grüßen
Andreas

site 2.png
site 1.png
site 0.png
Mai 7, 2021 um 9:54 am #8712549

Christian

Hallo Andreas,

ja, wie zuvor geschrieben, haben wir den Source Code von WPML gepatcht. Damit haben wir eine Lösung und alle unsere Blogs laufen jetzt.

Die Frage ist nur, ob sie das in ihrem Source anpassen/korrigieren wollen/werden, so das wir weiterhin updaten können. Aus unserer Sicht ist dies ein Fehler in WPML, das Multi-Site mit abweichenden Home und Site URL nicht korrekt behandelt wird.

Zu diesem Teil brauchen wir noch eine Antwort, damit wir wissen, wie wir mit dem Patch umgehen müssen. Sie hatten ja geschrieben, das sie das intern prüfen wollen. Ist nur die Frage, ob wir das mitbekommen, was das Ergebnis ist.

Das Problem selbst ist gelöst.

Viele Grüße
Bernd Engelhardt

Mai 11, 2021 um 1:36 pm #8740589

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo Bernd,

Ich bitte Sie um noch etwas Geduld, da ich auf Antwort unseres Second Tier Supports warte.

Ich bin mir hier nicht sicher, ob dieses Verhalten zu erwarten, zudem auch nicht ob es sich um einen Feature Request oder eine benutzerdefinierte Anfrage handelt, aber ich vermute eher, so wie meine Kollegen im Support, dass WPML nicht designed ist, um unterschiedliche site_URL und home_URL auf der gleichen WP Installation zu unterstützen.

Unser Second Tier Support meiter hier, dass ein solches Feature eigentlich nicht abgedeckt ist und mir einem zusätzlichen Plugin oder einem Entwickler indiviuell gelöst werden muss.

Ich habe dann nochmal Ihren Patch weitergelteitet, um hier eine weitere Meinung zu erhalten. Sobald ich mehr Informationen zum Thema habe, werde ich mich wieder melden.

Mit freundlichen Grüßen
Andreas

Mai 12, 2021 um 3:17 pm #8750517

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo Bernd,

Das berichtete Problem wurde in einer weiteren Instanz intern eskaliert.

Sobald ich mehr Feedback von unserem Team erhalten habe, werde ich mich wieder melden.

Mit freundlichen Grüßen
Andreas

Juni 2, 2021 um 9:00 am #8896267

Andreas W.
Supporter

Languages: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Timezone: America/Lima (GMT-05:00)

Hallo,

Bitte nehmen Sie daovn Kenntnis, dass Sie uns hier auf einen Bug in WPML Core aufmerkasam gemacht haben, der an unsere Entwickler weitergeleitet wurde und in einer kommenden Version des WPML Core Plugins behoben werden sollten.

Zudem hat mich ein Kollege vom Second Tier Support gebeten folgenden Vorschlag für das von Ihnen berichtete Problem zu unterbreiten:

Wir haben einen Filter mit dessen Hilfe Sie nicht die WPML Core-Dateien eidtieren müssen und anstelle dessen könnten sie ein einfaches Custom-Plugin verwenden:

<?php
add_filter('wpml_url_converter_get_abs_home', function ($absolute_home) {
	global $wpdb;
	if (is_multisite() && !is_main_site()) {
		$sql = "SELECT option_value "
			. "FROM {$wpdb->options} "
			. "WHERE option_name = 'home' LIMIT 1";
		return $wpdb->get_var($sql);
	}
	
	return $absolute_home;
});
?>

Wir hoffen das ist in der Zwischenzeit eine annehmbar Lösung für Sie.

Mit freundlichen Grüßen
Andreas Walter

Juni 2, 2021 um 1:24 pm #8899819

Christian

Hallo Andreas,

besten Dank für das Feedback. Es freut uns zu hören, das unsere Vorschläge/Hinweise angekommen sind und sie aufgenommen werden. Das ist super! Danke!

Auch danke für den Code Vorschlag für den Workaround. Wir hatten uns schon selbst einen Filter gebaut, um das Problem (temporär) zu lösen. Bei uns läuft also alles im Moment.

Wenn dann mal ein Update kommt, dann würden wir es noch mal testen und schauen, ob wir unsere Anpassung wieder raus nehmen können.

Es wäre super, wenn wir irgendwie eine Info bekommen könnten, wenn die Anpassung in einem der nächsten Updates drin ist. Dann würden wir noch mal aktiv testen. Vielleicht können sie das dann hier in dem Ticket posten oder uns eine E-Mail zukommen lassen. Wäre super!

Aber noch einmal vielen Dank für die Unterstützung.
Viele Grüße
Bernd Engelhardt