Imagen decorativa

Cómo hacer compatible qTranslateX con Cookie Notice y YoastSEO

En este artículo vamos a abordar como resolver el problema de compatibilidad existente entre los plugins Cookie Notice y Yoast SEO con qTranslate-X.
En primer lugar vamos a explicar en que consisten y que nos pueden aportar estos tres plugins a nuestro sitio WordPress, luego observaremos como Cookie Notice y Yoast SEO inicialmente no son compatibles con qTranslate-X y finalmente abordaremos una posible solución que nos ayude a resolver este problema.

Cookie Notice

Cookie Notice, a día de hoy, es considerado uno de los mejores plugins de WordPress para poder cumplir con la Ley de cookies vigente en España y resto de Europa. Nos permite informar a los usuarios del uso de cookies por parte de un sitio web. Este plugin, personalizable y de código abierto, ha sido realizado por dFactory y puede ser usado en cualquier proyecto web creado con WordPress.

Yoast SEO

Yoast SEO, desarrollado por Joost de Valk y su equipo en Yoast, es considerado uno de los mejores plugins de WordPress para SEO. Este plugin nos puede ayudar a optimizar el contenido de nuestro sitio web y, de este modo, mejorar nuestro posicionamiento web en los buscadores.

qTranslate X

qTranslate-X es uno de los plugins más populares para crear y mantener sitios multilingues en WordPress. Cuenta con más de 100.000 instalaciones activas y es libre, aunque en la página de información y descarga indican que los usuarios que lo usan de forma permanente deberán realizar una donación.

Compatibilidad de Cookie Notice y Yoast SEO con qTranslate X

Si tenemos una web multiidioma hecha en WordPress es probable que estemos usando el Plugin QTranslate-X. Si también usamos el plugin Cookie Notice, nos surgirá un problema cuando intentemos redactar o traducir el mensaje de notificación de uso de las cookies en los distintos idiomas que usemos en nuestro sitio web, ya que Cookie Notice no nos va a permitir introducir los textos en varios idiomas, ni tampoco nos permitirá usar los shortcodes de wordpress para seleccionar el idioma para el que deseamos definir ese contenido. Lo mismo nos sucederá en el caso de querer usar Yoast SEO junto a qTranslate-X.

En el caso de Cookie Notice tenemos que sólo es compatible con los plugins multiidiomas WPML Y Polylang, las alternativas a qTranslate X.

Para resolver el tema de la compatibilidad entre Yoast SEO y qTranslate, en el año 2016, apareció un nuevo plugin llamado «Integration: Yoast SEO & qTranslate-X», aunque si sigues los pequeños pasos que te detallamos a continuación, podrás ahorrarte su instalación.

Cómo resolver y configurar la compatibilidad de Cookie Notice y Yoast SEO con qTranslate X

En primer lugar deberemos acceder al archivo functions.php. Este archivo se encuentra dentro de la carpeta del tema que estés usando. Si el tema que usas se denomina temaActivo, por poner un ejemplo, la ruta para localizar el fichero functions.php será /wp-content/themes/temaActivo/functions.php, al cual deberemos añadir la siguiente línea de código:

function qtranslate_filter( $text ) {
return __( $text ); /* nos devuelve un string */
}

Solución al problema de traducción del plugin Yoast SEO con qTranslate X

Para resolver el problema de compatibilidad de qTranslateX con Yoast SEO deberemos insertar el siguiente código, también en el fichero functions.php:

add_filter('wpseo_title', 'qtranslate_filter', 10, 1);
add_filter('wpseo_metadesc', 'qtranslate_filter', 10, 1);
add_filter('wpseo_metakey', 'qtranslate_filter', 10, 1);
add_filter( 'wpseo_opengraph_title', 'qtranslate_filter', 10, 1 );

Solución al problema de traducción del plugin Cookie Notice con qTranslate X

En el caso de Cookie Notice, deberemos trabajar con cn_cookie_notice_args. A diferencia de las etiquetas usadas por Yoast SEO, cn_cookie_notice_args es un array, en vez de un string. Si simplemente insertamos el código:

add_filter( 'cn_cookie_notice_args', 'qtranslate_filter', 10, 1);

Se nos generará el siguiente error:

warningWarning: Illegal offset type in isset or empty in /"mi-instancia-wordpress"/wp-includes/pomo/translations.php on line 85

Para resolver este problema, hemos modificado el fichero translations.php. Este fichero se encuentra dentro del directorio wp-includes/pomo. Una vez abierto el fichero deberemos modifcar la función translate_entry(), a la que añadiremos la línea if (is_array($key)) {return "";}. La función quedará de la siguiente manera:

function translate_entry(&$entry) {
$key = $entry->key();
if (is_array($key)) {return "";} /*modificación realizada*/
return isset($this->entries[$key])? $this->entries[$key] : false;
}

Esta solución no es muy elegante pero resolverá el problema actual de la compatibilidad entre los plugins Cookie Notice y qTranslate X, hasta que no se añada la compatibilidad entre ambos plugins.

Uso de la solución propuesta

A partir de aquí podremos hacer uso de los shortcodes idiomáticos de qTranslate-X que nos permiten declarar un campo como multilingue o traducible. De este modo, en los campos de los plugins Cookie Notice y Yoast SEO que acabamos de identificar, deberemos escribir, por ejemplo:

[:es]Esta web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso.[:en]This site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.[:]

Leave a Reply

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

*