Eliminar el código generado por Qtranslate después de desactivarlo

Estas instrucciones exigen algo de conocimiento técnico e implican un riesgo. Procede con cautela y haciendo copia de base de datos previamente.

Hace ya varios años fue abandonado qTranslate, el popular plugin gratuito para crear sitios multi-idioma en WordPress, y la versión desarrollada por sus usuarios, retomando y continuando con su mantenimiento, qTranslate-X, que llegó a tener bastante acogida y adaptaciones para su integración con otros plugins, también dejó de actualizarse.

Pero la novelesca historia de este desarrollo no acabó ahí y como Boris el ruso de la película de Cerdos y Diamantes, el plugin se negaba a desaparecer y apareció qTranslate-Xt, versión tomada por otros usuarios y que alcanza a tener soporte para WordPress 5.1.1. Aunque tiene soporte para integración con otros plugins populares, desafortunadamente no tiene soporte para Gutenberg y aunque está contemplado, parece que no lo tendrá por un largo rato.

Y, ¿ahora?

Este blog lo tenía en inglés, y usaba qTranslate como solución multi-idioma, y para mi desgracia, al actualizar a WordPress 5.0, migrando de qTranslate-X a qTranslate-Xt, comprobé que Gutenberg no era compatible. Y aunque no es popular, a mí sí me gusta Gutenberg como sistema de edición y lo quería usar. Esto hizo que perdiera algunas publicaciones en las que estaba trabajando y me hizo considerar el perfil de mis visitantes. Decidí enfocarme en usuarios de habla hispana y eliminé el plugin de multi-idioma.

El código generado por qTranslate

Pero como los usuarios de este plugin sabemos, genera un código que es evidente sólo al desactivarlo y aparece en títulos, contenidos, widgets, etc:

[:en], [:], [:es] , etc.

¿Cómo elimino ese código?

Puedes usar un plugin como qTranslate Clean, pero yo prefiero evitar el uso de plugins, como comentaré en un artículo más adelante.

La solución para no tener que hacerlo elemento por elemento es la siguiente, asumiendo que queremos mantener todo lo que tenemos en español:

(IMPORTANTE: realiza una copia de seguridad de tu base de datos antes de hacer esto):

1.Ingresa a phpMyAdmin y ubica tu base de datos.

2. Selecciona la pestaña SQL y ejecuta el siguiente script:

UPDATE wp_posts SET post_content = case when 
LOCATE('[:es]', post_content) > 0 
then 
SUBSTRING(
    post_content
        FROM 1
        FOR LOCATE(
                '[:', 
                post_content,
                LOCATE('[:es]', post_content) + 5
        ) - 1
) 
else 
post_content 
end;

3. A continuación ejecuta la siguiente acción:

UPDATE wp_posts SET post_content = case when 
LOCATE('[:es]', post_content) > 0 
then 
SUBSTRING(
    post_content
        FROM LOCATE(
                '[:es]', 
                post_content
        ) + 5
) 
else 
post_content
end;

4. Luego:

UPDATE wp_posts SET post_title = case when 
LOCATE('[:es]', post_title) > 0 
then 
SUBSTRING(
    post_title
        FROM 1
        FOR LOCATE(
                '[:', 
                post_title,
                LOCATE('[:es]', post_title) + 5
        ) - 1
) 
else 
post_title
end;

5. Enseguida:

UPDATE wp_posts SET post_title = case when 
LOCATE('[:es]', post_title) > 0 
then 
SUBSTRING(
    post_title
        FROM LOCATE(
                '[:es]', 
                post_title
        ) + 5
) 
else 
post_title
end;

6. Si tienes extractos personalizados debes ejecutar además:

UPDATE wp_posts SET post_excerpt = case when 
LOCATE('[:es]', post_excerpt) > 0 
then 
SUBSTRING(
    post_excerpt
        FROM 1
        FOR LOCATE(
                '[:', 
                post_excerpt,
                LOCATE('[:es]', post_excerpt) + 5
        ) - 1
) 
else 
post_excerpt
end;

7. Y:

UPDATE wp_posts SET post_excerpt = case when 
LOCATE('[:es]', post_excerpt) > 0 
then 
SUBSTRING(
    post_excerpt
        FROM LOCATE(
                '[:es]', 
                post_excerpt
        ) + 5
) 
else 
post_excerpt
end;

Si detectas otro código como <!–:en–> deberás realizar los mismos pasos con este código.

Adicionalmente, es probable que queden los contenidos en ambos idiomas dentro de cada entrada, como a mí me sucedió, por lo que deberás eliminar el texto manualmente.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

5 × cuatro =