Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
google search console

Cómo corregir los errores de datos estructurados de Google Search Console en WordPress

El otro día vi que tenía una serie de errores en el apartado Aspecto de la búsqueda => Datos estructurados de la Google Search Console:

microformat error

Concretamente en el tipo de datos hentry, fuente: microformats.org. hentry en un microformato, es decir, una manera de agregar significado semántico a un contenido de texto plano. El microformato hentry tiene las siguientes propiedades:

  • entry-title ( obligatorio, texto)
  • entry-content (opcional, texto)
  • entry-summary (opcional, texto)
  • entry-updated (obligatorio, fecha)
  • entry-published (opcional, fecha)
  • author (obligatorio, hCard)
  • bookmark (opcional, rel-bookmark)
  • tags (opcional, rel-tag)

 

Más información aquí

Como se puede observar en la foto anterior los errores vienen dados porque faltan propiedades obligatorias como author, entry-title y updated. Esto es porque en el listado de posts, los articles lucían así:

<article id="post-<?php the_ID();?>" <?php post_class();?>> <h2><a href="<?php echo get_permalink();?>" title="<?php echo get_the_title();?>"><?php echo get_the_title();?></a></h2> <div class="entry-content"> <p class="post-meta">publicado por <?php the_author_posts_link();?> en <?php echo get_the_category_list( ', ' );?> el <?php the_time('j');?> de <?php the_time('F');?> de <?php the_time('Y');?></p> <?php the_excerpt();?> </div><!-- entry-content --> </article>

Como puede observarse, en la etiqueta article se llama a la función post_class(), que genera uno o más de los siguientes valores para el atributo class:

  • post-[id]
  • [post-type]
  • type-[post-type]
  • status-[post-status]
  • format-[post-format] (default to ‘standard’)
  • post-password-required
  • post-password-protected
  • has-post-thumbnail
  • sticky
  • hentry (hAtom microformat pages)
  • [taxonomy]-[taxonomy-slug] (includes category)
  • tag-[tag-name]

 

Entre ellos hentry. Por lo tanto desde la Search Console se detectó que existía una etiqueta article con el microformato hentry, pero dentro de ella faltaban propiedades obligatorias. Éstos errores puede influir negativamente en nuestro SEO. Ahora veamos dos maneras de solucionarlo:

 

Solución 1: Muerto el perro se acabó la rabia

Si eliminamos la causa del problema, eliminaremos el problema en sí. Vamos a eliminar el valor hentry de la función post_class() para que la Google Search Console no detecte un microformato. Para ello en el archivo functions.php de nuestro tema añadiremos las líneas:

//Remove the Hentry Class function remove_hentry_post_class( $classes ) { $classes = array_diff( $classes, array( 'hentry' ) ); return $classes; } add_filter( 'post_class', 'remove_hentry_post_class' );

 

Solución 2: Añadir las propiedades obligatorias

Para corregir los errores vamos a añadir en todas las plantillas de nuestro tema donde tengamos loops que muestren información sobre nuestros posts, quedando algo así:

<article id="post-<?php the_ID();?>" <?php post_class();?>> <h2><a href="<?php echo get_permalink();?>" title="<?php echo get_the_title();?>" class="entry-title" rel="bookmark"><?php echo get_the_title();?></a></h2> <div class="entry-content"> <p class="post-meta">publicado por <span class="vcard author"><?php the_author_posts_link();?></span> en <?php echo get_the_category_list( ', ' );?> el <span class="updated"><?php the_time('j');?> de <?php the_time('F');?> de <?php the_time('Y');?></span></p> <?php the_excerpt();?> </div><!-- entry-content --> </article>

Como puede observarse, hemos añadido:

  • class=»entry-title» rel=»bookmark» en la etiqueta a del <h2>
  • <span class=»vcard author»> envolviendo la función the_author_posts_link()
  • <span class=»updated»> envolviendo la fecha (the_time(‘j’), the_time(‘F’) y the_time(‘Y’))

 

La propiedad author del microformato hentry debe tener formato de hCard, por lo que sería necesario añadir rel=»author» class=»fn» al enlace de autor en la función the_author_posts_link(). Para esto añadiremos lo siguiente a nuestro functions.php:

// Add class to author link function add_class_to_author_link( $link ) { return str_replace( 'rel="author"', 'rel="author" class="fn"', $link ); } add_filter( 'the_author_posts_link', add_class_to_author_link);

Con estos pasos ya sólo queda esperar a que la Google Search Console rastree de nuevo nuestro sitio y veamos cómo se eliminan los errores. No obstante, puedes verificarlos online desde aquí antes de subir estos cambios a producción.

Puede que también te interese

Creando el .htaccess perfecto para WordPress
Creando el .htaccess perfecto para WordPress
El fichero .htaccess es un archivo de configuración de Apache. Nos permite establecer reglas en un directorio, por ejemplo, WordPress lo usa para crear una…
Creando un tema desde cero para WordPress parte 3: El loop
Creando un tema desde cero para WordPress parte 3: El loop
1. Creando un tema desde cero para WordPress: Consideraciones previas 2. Creando un tema desde cero para WordPress: Escribiendo el tema 3. Creando un tema…
AJAX en WordPress, la manera tradicional
AJAX en WordPress, la manera tradicional
Comienzo una serie de entradas donde veremos cómo hacer AJAX en WordPress. SPOILER ALERT: En este primer post, con un simple ejemplo, veremos cómo hacer…
Añadir un icono personalizado a nuestro custom post type
Añadir un icono personalizado a nuestro custom post type
La versión 3.8 de WordPress trajo consigo nuevas mejoras, el tema Twentyfourteen, y un cambio completo de diseño en el Back End. Con éste cambio,…