WPML

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

Geschrieben von Amir · Zuletzt aktualisiert am 23. Mai 2022