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 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.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

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

    1. ¿estás usando rich snippets verdad?

      Tendrías que completar el atributo image:

      «image»: {
      «@type»: «ImageObject»,
      «url»: urldetuimagen,
      «height»: alturadetuimagen,
      «width»: anchodetuimagen
      },

    1. La solución pasaría bien porque contactes con el autor del tema y solicites estos cambios, bien porque crees tu propio child-theme donde puedas modificar el single.php a tu antojo

      Saludos

      1. Entiendo, pero y si utilizo la opcion de…¿»eliminar el valor hentry de la función post_class() para que la Google Search Console no detecte un microformato»? eso afectará al seo o posicionamiento de mi web? y con la otra opcion mejoraria? tan importante es?

          1. Pero entonces si hay un microformato con errores, y está mal (el mio), entonces quitarlo (en el functions.php) supone mas beneficios que dejarlo ahí con los errores supongo no? Aunque no seas un experto en seo, crees que me traería mas beneficios quitarlo que dejarlo mal? Por cierto, gracias por tus respuestas 😀

          2. Como te dije, no soy un experto en SEO. No creo que sean un factor determinante, pero sí soy de la opinión de mejor no tenerlos a tenerlos con errores.

            Quizá puedas quitarlos de tu plantilla e intentar buscar algún plugin que te los genere.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios