WordPress Polylang Entwickler-Tipps

Polylang ist ein sehr beliebtes WordPress Plugin zur Erweiterung von Websites um mehrere Sprachen. Da die Architektur etwas gewöhnungsbedürftig ist, fasse ich in diesem Beitrag wichtige Infos für WordPress-Entwickler zusammen.

Post Übersetzungen

Polylang speichert die Verlinkung von Übersetzungen in Taxonomien.

Die Verlinkungen der Übersetzungen der posts (also Seiten, Beiträge etc.) werden in der Taxonomie post_translations gespeichert.

Die Verlinkungen der Übersetzungen von Taxonomien (also Tags/Stichworte, Kategorien etc.) werden in der Taxonomie term_translations gespeichert.

Hier ein MySQL Beispiel, wie man die Übersetzung eines Posts direkt aus der Datenbank laden kann. Hier soll die chinesische Übersetzung (zh) des posts mit der ID 6101895 geholt werden.

SELECT * FROM `wp_posts` 
  WHERE post_status = 'publish' 
    AND ID IN (
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(description, '"zh";i:', -1), ';',1) 
    FROM wp_term_taxonomy 
    WHERE `taxonomy` = 'post_translations' 
    AND description LIKE '%:6101895;%'
  )

Das sollte man natürlich nur tun, wenn es gute Gründe dafür gibt. Normalerweise sollte man die Funktionen aus der Polylang Funktionsreferenz verwenden.

String Translations

Die String Translations (also Übersetzungen von Wörtern, die nicht anderweitig übersetzt werden können) sind als serialisiertes Array unter dem meta key _pll_strings_translations in der postmeta Datenbanktabelle gespeichert.

Und zwar in der postmeta der Polylang MO-Sprachdatei der jeweiligen Sprache, ein post Eintrag mit post_type polylang_mo