WPML

WPML 3.9 introdujo la posibilidad de mostrar contenido proveniente del idioma original al ver páginas en otros idiomas. Si su sitio dependía de la duplicación de contenido antes de la versión 3.9, es posible que quiera eliminar todo el contenido duplicado de su sitio antes de usar este nuevo modo de traducción.

Cómo usar este tutorial

Los pasos indicados en esta página eliminan configuraciones y contenidos de la base de datos. Proceda solo si sabe lo que está haciendo y, sin falta, comience por crear una copia de seguridad completa de la base de datos de su sitio.

Para usar las consultas SQL proporcionadas, debe editarlas:
  • Reemplace XXXX con el tipo de contenido del que desea eliminar contenidos duplicados (por ejemplo, “post”, “product” o “page”).
  • Reemplace YYYY con el código del idioma predeterminado del sitio (por ejemplo, “en”).
  • Reemplace wp_ con el prefijo de tabla configurado mediante la variable $table_prefix en el archivo wp-config.php (el valor predeterminado es wp_).

Finalmente, debe ejecutar estas consultas usando una de las herramientas para trabajar con bases de datos SQL, por ejemplo, phpMyAdmin.

1. Eliminar contenido duplicado

Eliminar contenido 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. Eliminar configuraciones de traducción

Eliminar configuraciones de traducción 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. Eliminar metadatos de entradas huérfanos


Tenga en cuenta que la ejecución de esta consulta es lenta y puede agotar el tiempo de espera, dependiendo de la configuración de su servidor. Además, no es obligatorio ejecutar esta consulta, ya que solo se usa para limpiar su base de datos de cualquier metadato de entrada huérfano.
Eliminar huérfanos 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 actualización 23 de mayo de 2022