Problemas con la nube de etiquetas tras actualizar WordPress

En Desarrollo, Tutoriales y Guías, Webmasters por

Tras un largo tiempo de inactividad volvemos a la carga actualizándonos poco a poco y con nuevos tutoriales. En esta ocasión vamos a solucionar los problemas con la nube de etiquetas tras actualizar WordPress 4.4. Aclarar que es un problema que se puede dar si empleas un tema personalizado o desarrollado para WordPress en versiones anteriores a la 4.4.

Problemas con la nube de etiquetas

Problemas con la nube de etiquetas tras actualizar a WordPress 4.4

La historia es simple, un día decidí actualizar mi blog a WordPress 4.4 y la sorpresa fue que la nube de etiquetas estaba rota, no se visualizaba correctamente. Como consecuencia de este problema me vi obligado a desactivar durante unos meses la nube de etiquetas en Vozidea.com, pero hoy comparto la solución detallada.

El origen de este problema no era el propio WordPress, sino que tras la actualización a WordPress 4.4 la función wp_tag_cloud() fue modificada, por lo que le código del tema no funcionaba como se esperaba.

Hasta ahora el código que venía usando dentro del archivo functions.php para modificar la nube de etiquetas con parámetros personalizados era algo como:

add_filter('widget_tag_cloud_args', 'my_tag_cloud_args');
function my_tag_cloud_args($in){
	return 'smallest=14&largest=14&number=25&orderby=name&unit=px';
}

Este código funcionaba correctamente porque la función wp_tag_cloud() mostraba directamente su valor ('echo' => true), pero con la llegada de WordPress 4.4 la nube de etiquetas por defecto se almacena en una variable, en lugar de mostrar su valor directamente ('echo' => false).

Usando el código antiguo anulamos los valores por defecto al agregar nuestros parámetros personalizados, lo que provoca que la nube de etiquetas se muestre en el lugar incorrecto y por lo tanto que se visualice incorrectamente. La solución pasa por no anular los valores por defecto, sino que debemos agregar nuestros parámetros personalizados a los parámetros por defecto. Esto lo conseguimos escribiendo el código de la siguiente forma:

add_filter('widget_tag_cloud_args', 'my_tag_cloud_args');
function my_tag_cloud_args($args) {
    $my_args = array(
        'smallest' => 14,
        'largest'   => 14,
        'number' => 25,
        'unit'  => 'px',
        'orderby' => 'name', );
    $args = wp_parse_args( $args, $my_args );
    return $args;
}

En este Segundo código podemos apreciar que empleamos la función wp_parse_args() para “juntar” los parámetros por defecto con los parámetros personalizados. Con este cambio tan sencillo solucionamos el problema y podemos seguir haciendo uso del widget de etiquetas sin problemas.