O WPML 3.9 introduziu a possibilidade de exibir o conteúdo proveniente do idioma original ao visualizar páginas em outros idiomas. Se o seu site dependia da duplicação de conteúdo antes da versão 3.9, você pode querer excluir todo o conteúdo duplicado do seu site antes de usar esse novo modo de tradução.
Como usar este tutorial
Os passos fornecidos nesta página removem configurações e conteúdos do banco de dados. Prossiga apenas se você souber o que está fazendo e, sem dúvida, comece criando um backup completo do banco de dados do seu site.
Para usar as consultas SQL fornecidas, você deve editá-las:
- Substitua XXXX pelo tipo de post para o qual você deseja excluir os conteúdos duplicados (por exemplo, “post”, “product” ou “page”).
- Substitua YYYY pelo código do idioma padrão do site (por exemplo, “en”).
- Substitua wp_ pelo prefixo da tabela configurado usando a variável $table_prefix no arquivo wp-config.php (o padrão é wp_).
Por fim, você precisa executar essas consultas usando uma das ferramentas para trabalhar com bancos de dados SQL, por exemplo, o phpMyAdmin.
1. Remover conteúdo duplicado
Excluir conteúdo duplicado 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. Remover configurações de tradução
Excluir configurações de tradução 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. Remover post meta órfãos
Observe que a execução dessa consulta é lenta e pode atingir o tempo limite, dependendo das configurações do seu servidor. Além disso, não é obrigatório executar essa consulta, pois ela é usada apenas para limpar o seu banco de dados de quaisquer post meta órfãos.
Excluir órfãos 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