Hat man bspw. bei unserem Theme unter den Theme-Settings eine Verlinkung für eine Stelle auf der Webseite hinterlegt kommt es zum Problem mit WPML. Die Verlinkung ignoriert die derzeitige Sprache auf der Webseite. Wir landen also immer auf den Unterseiten in der Standardsprache.
Der „fehlerhafte“ href sieht wie folgt aus:
$linkID = read_option('option_link');
>> gibt uns die Seiten ID der in den Theme-Settings ausgewählten Seite in Standardsprache zurück
... href="<?php echo get_permalink($linkID) ?>" ...
Da die Inhalte und deren Übersetzung verknüpft sind, können wir an dieser Stelle dynamisch in Abhängigkeit der Sprache die jeweilige ID statt der Standardsprachen ID ausgeben.
Dafür benutzen wir die icl_object_id Methode von WPML.
Das geht wie folgt:
$linkID = read_option('option_link'); $linkIDlang = icl_object_id( $linkID, 'post', true, $lang );
>> setzt die ID in Abhängigkeit der eingestellten Sprache
... href="<?php echo get_permalink($linkIDlang) ?>" ...
Nun sollte die Verlinkung auch an den Stellen zur aktuelle ausgewählten Sprache zeigen.