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:
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 o en nuestro plugin de utilidades añadiremos las líneas:
<?php
//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:
<?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.