WPML

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

Escrito por Amir · Última atualização em 23 de maio de 2022