El otro día me encontré con un problema al montar un Wordpress con un cliente. Me encontré el Wordpress montado ya, con un montón de plugins instalado y una plantilla (…que esta plantilla da para una serie de posts) un poco recargada para mi gusto. El tema es que esta instalación tenía instalado el maravilloso plugin WPML para las traducciones a otros idiomas.
Tras actualizar este plugin, el debug comenzó a mostrar un Warning del tipo: on line 223 Warning: Invalid argument supplied for foreach() in httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/language-switcher/class-wpml-ls-templates.php. No se trata de un error propiamente dicho, pero el error_log comienza a llenarse con cientos de líneas avisando de que algo no marcha bien.
Soluciona el Warning del tipo: on line 223 Warning: Invalid argument supplied for foreach() del plugin WPML
La solución es tan fácil como editar el archivo al que hace referencia el Warning. Este lo encontraremos en la ruta indicada: /wp-content/plugins/sitepress-multilingual-cms/classes/language-switcher/class-wpml-ls-templates.php. En el, en la línea 222 encontraremos lo siguiente:
if ( count( glob( $search_path ) ) > 0 ) {
Esta línea la tendremos que cambiar por:
if ( glob( $search_path ) ) {
Como vemos, se suprime la función count y la comparación con 0. Al eliminarla del condicional, la función glob devuelve un array que contiene los ficheros/directorios coincidentes, un array vacío si no hubo ficheros coincidentes o FALSE
si se produjo un error.
Aplicando estos pequeños cambios, el debug de Wordpress dejará de mostrar el aviso y nuestro error log dejará de llenarse tontamente con el Warning de turno.
Doy por hecho que todo el que esté leyendo esto sabe como activar el debug de Wordpress. Pero si este no fuese tu caso, quiero aclarar que WP_DEBUG es una constante de PHP (una variable global permanente). Al ser establecida como verdadera (true) activa el modo de «depuración» en WordPress. Su valor predeterminado es falso (false) y el archivo en el que debería establecer su valor es wp-config.php (situado en la raíz del sitio).
El formato de esta constante que deberías buscar y cambiar según te interese es el siguiente:
define('WP_DEBUG', true); //WP_DEBUG ACTIVADO
o
define('WP_DEBUG', false); //WP_DEBUG DESACTIVADO