WPML 3.9 führte die Möglichkeit ein, Inhalte aus der Originalsprache anzuzeigen, wenn Seiten in anderen Sprachen betrachtet werden. Wenn Ihre Website vor der Version 3.9 auf Inhaltsduplizierung angewiesen war, möchten Sie vielleicht alle duplizierten Inhalte von Ihrer Website löschen, bevor Sie diesen neuen Übersetzungsmodus verwenden.
So verwenden Sie dieses Tutorial
Die auf dieser Seite beschriebenen Schritte entfernen Einstellungen und Inhalte aus der Datenbank. Fahren Sie nur fort, wenn Sie wissen, was Sie tun, und beginnen Sie unbedingt mit der Erstellung eines vollständigen Backups der Datenbank Ihrer Website.
Um die bereitgestellten SQL-Abfragen zu verwenden, müssen Sie diese bearbeiten:
- Ersetzen Sie XXXX durch den Beitragstyp, für den Sie duplizierte Inhalte löschen möchten (z. B. „post“, „product“ oder „page“).
- Ersetzen Sie YYYY durch den Sprachcode der Standardsprache der Website (z. B. „en“).
- Ersetzen Sie wp_ durch das Tabellenpräfix, das über die Variable $table_prefix in der Datei wp-config.php konfiguriert wurde (der Standardwert ist wp_).
Schließlich müssen Sie diese Abfragen mit einem der Tools zur Bearbeitung von SQL-Datenbanken ausführen, zum Beispiel phpMyAdmin.
1. Duplizierte Inhalte entfernen
Duplizierte Inhalte aus wp_posts löschen
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
SELECT pm.post_id
FROM wp_postmeta pm
JOIN wp_icl_translations t ON t.element_id = pm.meta_value
WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)2. Übersetzungseinstellungen entfernen
Übersetzungseinstellungen aus wp_icl_translations löschen
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
SELECT pm.post_id
FROM wp_postmeta pm
JOIN wp_icl_translations t ON t.element_id = pm.meta_value
WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)3. Verwaiste Post-Meta entfernen
Bitte beachten Sie, dass die Ausführung dieser Abfrage langsam ist und je nach den Einstellungen Ihres Servers zu einer Zeitüberschreitung führen kann. Außerdem ist es nicht zwingend erforderlich, diese Abfrage auszuführen, da sie nur dazu dient, Ihre Datenbank von verwaisten Post-Meta zu bereinigen.
Verwaiste Einträge aus wp_postmeta löschen
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL