Error en las categorías de wordpress 4.4

Inicio/Wordpress/Error en las categorías de wordpress 4.4

Detectado un error en las categorías de WordPress 4.4

Hemos detectado y solucionado un error en las categorías de WordPress 4.4 que creemos os puede dar más de un dolor de cabeza.

Descripción del error:

Al utilizar el widget de categorías, bien sea en la barra lateral o en el footer, el widget es exáctamente el mismo, el atributo “title” que debiera mostrarse en el front de la página web muestra todo el contenido que haya escrito en la descripción de la categoría correspondiente, esto que en principio pueda no parecer importante provoca dos efectos negativos:

  • El primero con la acción “mouse over” se muestra absolutamente todo el contenido introducido en la descripción y estéticamente no queda muy bien que digamos.
  • El segundo es bastante más grave y es que al contener el atributo “title” todo el texto introducido, aumenta la densidad de Html considerablemente y Google no indexa correctamente la categoría que tiene un “title” demasiado largo.

He buscado en los foros de WordPress.org por si existía una solución y aplicarla para corregir el problema, pues bien, por ahora no existe, así que os vamos a contar como lo hemos solucionado y al haberlo reportado a WordPress se supone que se corregirá en la próxima actualización.

Empezaré por decir que no me gusta trabajar nunca con la última versión de WordPress ya que suele dar problemas con actualizaciones de plugins y Themes, WordPress normalmente comunica el contenido de las actualizaciones a los desarrolladores cuando está prácticamente a punto de publicarla y es frecuente encontrar problemas con algunos plugins y Themes que no se han actualizado convenientemente, obviamente en actualizaciones de bajo calado como las que se están publicando en los últimos meses este problema sucede de forma muy poco frecuente, pero en actualizaciones más profundas como ocurrió con la 3.2, los problemas aparecieron por sorpresa y tuvimos que correr haciendo parches mientras llegaban nuevas actualizaciones. Esperemos que para cuando leas este post ya está disponible WordPress 4.1.1 cuya salida estaba prevista para el pasado 6 de enero, pero al no ser estable se ha retirado de forma provisional, así que si tienes el aviso de actualiza a WordPress 4.1.1 por ahora mejor no lo hagas.

Solucionando el error en las categorías de WordPress 4.4

El error en las categorías de WordPress 4.4 viene dado por la llamada que se genera a partir de la línea 985 de tu archivo category-template.php que podrás localizar fácilmente en la carpeta wp-includes –> category-template-php.

Concretamente la línea culpable del error en las categorías de WordPress es la 999 que es la que genera los argumentos para mostrar el title de la categoría correspondiente y que está escrita como sigue:

error en las categorias de wordpress 4.4

Como vemos está indicando que escriba el nombre de la categoría, pero le dice a su vez que si encuentra el title vacío use la descripción, pues bien, le da igual si el title está vacío o no, añade absolutamente todo al atributo title, con lo cual nos queda un título tan largo que Google es incapaz de interpretar.

He de decir que lejos de lo que pueda parecer no se trata de modificar sólo esta línea para resolver el error en las categorías de WordPress 4.4, ya que en el código que hace referencia a las distintas llamadas para la escritura del “title” hay un conjunto de argumentos asociados que provocan más de un problema si corregimos sólo la línea, lo más fácil sería cambiar el ‘use_desc_for_title’ por ‘use_name_for_title’ y asignar una variable mediante un tag al atributo name.

En primer lugar hemos comentado todo el contenido que hace referencia al cat_name, es decir desde la línea 985 hasta la línea 1063, una solución un poco drástica pero que nos ha resultado bastante efectiva, y a continuación hemos mapeado la secuencia de comandos para conseguir el resultado que buscábamos.

Quiero recordar que antes de tocar nada en los archivos del Core de WordPress, en realidad antes de tocar nada en ningún archivo, lo mejor es hacer una copia de seguridad del archivo por si necesitamos reponerlo.

También decir que a pesar de que hemos comprobado en distintas instalaciones que la solución al enrror en las categorías de WordPress 4.4 funciona perfectamente, la decisión de aplicarla o no es exclusívamente tuya.

Hemos revisado también en versiones anteriores a 4.4 que el código es el mismo, pero como la solución la hemos encontrado trabajando sobre 4.4 no podemos asegurar hasta que lo probemos si funciona con las versiones anteriores de WordPress.

Hemos optado pues por corregir toda la secuencia y dejarla como podéis ver a continuación:

  • En primer lugar hemos mapeado todo aquello que queriamos corregir con funciones de llamada a argumentos
    • error en las categorías de wordpress solución
    • Como podéis observar en la línea 532 mantenemos el argumento ‘use_desc_for_title’ en valor 1 ya que después lo vamos a tener que utilizar.
  • A continuación argumentamos las exclusiones que se deben realizar y también los resultados relacionados con estas exclusiones.
    • error en las categorías de wordpress
  • Hemos tageado lo que si nos interesa que realmente se muestre al generar la url de la categoría y aquí es donde le hemos dado un tag exclusivo al “title”
    • $tags_data[] = array(
      ‘id’         => $tag_id,
      ‘url’        => ‘#’ != $tag->link ? $tag->link : ‘#’,
      ‘name’         => $tag->name,
      ‘title’      => $title,
      ‘slug’       => $tag->slug,
      ‘real_count’ => $real_count,
      ‘class’         => ‘tag-link-‘ . $tag_id,
      ‘font_size’  => $args[‘smallest’] + ( $count – $min_count ) * $font_step,
      );
      }
  • A continuación hemos creeado la nueva estructura de las url:
    • foreach ( $tags_data as $key => $tag_data ) {
      $a[] = “” . esc_html( $tag_data[‘name’] ) . ““;
      }switch ( $args[‘format’] ) {
      case ‘array’ :
      $return =& $a;
      break;
      case ‘list’ :
      $return = ”

          \n\t

        • “;
          $return .= join( “

      \n\t

    • “, $a );
      $return .= “
    • \n\n”;
      break;
      default :
      $return = join( $args[‘separator’], $a );
      break;
      }

      if ( $args[‘filter’] ) {

Y con esto hemos conseguido que las url se muestren con el title que corresponde.

Esperamos que esta corrección que hemos efectuado al error en las categorías de WordPress 4.4 os sea de utilidad, está comprobado y funciona, para evitar errores no hemos puesto todo el código de forma que se pueda copiar y pegar, de todas formas os dejamos la posibilidad de que os descargueis el archivo completo y subirlo a la carpeta wp-includes. Está en ZIP por razones de seguridad.

Y con esto podrás dar por solucionado el problema que genera el error en las categorías de WordPress 4.4

Si te ha resultado de ayuda esperamos tus comentarios y si tuviste algún problema tambien, estaremos encantados de ayudarte.

Rating: 5.0. From 3 votes.
Please wait...
2017-02-08T18:00:56+00:00