WPML 3.9 a introduit la possibilité d’afficher le contenu provenant de la langue d’origine lors de la consultation de pages dans d’autres langues. Si votre site s’appuyait sur la duplication de contenu avant la version 3.9, vous souhaiterez peut-être supprimer tout le contenu dupliqué de votre site avant d’utiliser ce nouveau mode de traduction.
Comment utiliser ce tutoriel
Les étapes fournies sur cette page suppriment les paramètres et le contenu de la base de données. Ne continuez que si vous savez ce que vous faites et commencez absolument par créer une sauvegarde complète de la base de données de votre site.
Pour utiliser les requêtes SQL fournies, vous devez les modifier :
- Remplacez XXXX par le type de publication pour lequel vous souhaitez supprimer le contenu dupliqué (par ex. « post », « product » ou « page »).
- Remplacez YYYY par le code de la langue par défaut du site (par ex. « en »).
- Remplacez wp_ par le préfixe de table configuré à l’aide de la variable $table_prefix dans le fichier wp-config.php (la valeur par défaut est wp_).
Enfin, vous devez exécuter ces requêtes à l’aide de l’un des outils permettant de travailler avec des bases de données SQL, par exemple, phpMyAdmin.
1. Supprimer le contenu dupliqué
Supprimer le contenu dupliqué de wp_posts
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. Supprimer les paramètres de traduction
Supprimer les paramètres de traduction de wp_icl_translations
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. Supprimer les métadonnées de publication orphelines
Veuillez noter que l’exécution de cette requête est lente et peut expirer, en fonction des paramètres de votre serveur. De plus, il n’est pas obligatoire d’exécuter cette requête car elle n’est utilisée que pour nettoyer votre base de données de toutes les métadonnées de publication orphelines.
Supprimer les orphelins de wp_postmeta
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL