Índice de contenido
Hace unas semanas revisando la Search Console de Google específicamente en la sección Apariencia en el buscador > Datos estructurados.
Tenia una buena colección de errores de tipo hentry y hatom.
Donde faltaban elementos de microformats author y updated.
Y me pregunte ¿por qué? si las entradas tienen su autor y fecha.
Usando el buscador de Google para investigar el error encontré información y el problema es muy común de lo que parece sobre todo en paginas web que usan algunos temas premium o gratis del gestor de contenidos WordPress.
Ya que la mayoría de los desarrolladores que diseñan las plantillas deciden usar el mismo código para generar el HTML básico, obteniendo como resultado el usuario final del tema un soporte parcial de datos estructurados que no se adapta a las necesidades de su proyecto o sitio web.
Como WordPress usa la funcion post_class() en las plantillas y esta 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] (predeterminado a ‘estándar’)
- post-password-required
- post-password-protected
- has-post-thumbnail
- sticky
- hentry (páginas de microformato hAtom)
- [taxonomy]-[taxonomy-slug] (incluye categoría)
- tag-[nombre-etiqueta]
Cuando el robot de Google rastrea las paginas del sitio web y detecta entre ellas la clase hentry (páginas de microformato hAtom) generada por la función mencionada anteriormente espera encontrar metadatos completos o obligatorios cuando visita las paginas, si faltan propiedades obligatorias el resultado conlleva a que Google nos muestre errores en la herramienta Search Console.
La acumulación de estos errores en la herramienta Search Google puede afectar negativamente nuestro SEO.
A pesar de investigar y notar que existen algunos post sobre este tema también note que algunos blogger solo colocaban códigos y las soluciones eran poco o nada explicables y por ende los resultados eran negativos.
Seguía por el camino con el mismo problema falta author, falta updated en la herramienta Search Google, teniendo en cuenta que la información era muy vaga decidí editar el tema que uso de tal manera que los errores falta author, falta updated se fueron solucionando.
Ahora a continuación te muestro como solucionar estos errores falta author, falta updated y también el menos común falta entry-title requeridos por Google independientemente de la plantilla de WordPress que uses.
Solución 1: Instalar un plugin de marcado de datos estructurados
La manera más facil de solucionar este y otros problemas en plantillas de WordPress, como siempre es instalar un plugins para este caso necesitamos un plugin que genere automáticamente los datos estructurados para cada página donde hagan falta los datos obligatorios requeridos por Google.
Existen unos cuantos que ofrecen este soporte de ayuda para generar estos datos, te recomiendo Schema App Structured Data o el plugin Schema.
El primero tiene alrededor de 9 mil instalaciones hasta el momento, es uno de los más completos que he encontrado y es semi-automatico.
Al activarlo ya genera de forma predeterminada el marcador de datos, cada vez que edites una nueva entrada o página encontraras una caja de Schema App Structured Data donde podrás confirmar que datos se crearan al publicar el post, generalmente debajo del plugin Yoast SEO si lo usas.
Para personalizar o configurar el plugin basta con ir a la sección Ajustes > Schema App > Settings y seleccionar que tipo de marcador de datos queremos que se generen.
El segundo y no menos importante tiene unas 30 mil instalaciones, me gusta mucho este plugin Schema porque su interfaz visual es simple nada complicado.
Tiene una Guía Paso a Paso que te ayuda a elegir marcado Schema adecuado para su sitio web, totalmente compatible los plugins Yoast SEO y AMP.
Solo tienes que instalarlo seguir la guía rellenando los campos que se te indiquen y listo, se solucionaran tus problemas de datos estructurados.
Solución 2: Editar la plantilla del tema WordPress
Esta solución es mi preferida, como mencionaba en algunos de los post no me decanto por usar muchos plugins, solo los necesarios.
A pesar de ser una solución un poco complicada para los que no les gusta editar el código de su plantilla WordPress, tratare de ser lo más claro posible para que no cometas ningún error.
Ahora volviendo al asunto, cada tema creado para WordPress es un mundo, ¿por qué? la razón es que, hay temas que hacen uso extensivo de templates para definir la plantilla cada una de sus partes que la componen.
Por ejemplo, el fichero de nombre content-single.php
dentro de su código encontramos la función post_class(); y en su caso una llamada a una función /template-part-postmeta.php
que contiene el nombre del autor, categoría, fecha de publicación, etc. Y se encarga específicamente del renderizado de la plantilla añadiendo las clases author y updated entre otras en los post.
Estoy casi seguro que no todos los temas hacen una llamada a otra template donde se encuentran los metadatos, pero para localizar donde se encuentra el error debemos encontrar la función post_class(); en los ficheros que por lo general son:
single.php
o content-single.php
(Si el error está en las entradas)
page.php
o content-page.php
(Si el error está en las paginas)
archive.php
, loop.php
o content-loop.php
(Si el error está en archivos o loop)
Y localizar en ellas si las clases metadatos están añadidas allí con etiqueta <div>
o la plantilla llama a otra template que por lo general tienen el nombre de template-tags.php
postmeta.php
o entry-meta.php
sirva a modo de ejemplo debes encontrar un código similar a los siguientes:
<?php tema_entry_meta(); ?>
<?php get_template_part( 'content', 'single' ); ?>
Cuando ya identifiques la plantilla donde se encuentra el error por falta de datos obligatorios lo siguiente es solucionarlo.
A pesar de que probablamente tu tema muestre el autor en las publicaciones y solo deseas solucionar este error que muestra Search Console.
La propiedad author en teoria debe tener formato de hCard por lo que si haces clic en inspeccionar en el nombre de author de tu sitio web es probable que la etiqueta que engloba author sea similar a la siguiente imagen.
Dando como resultado falta de información cuando el robots de google rastrea la pagina.
Por que debe tener formato de hCard con las siguientes class=»vcard author» y class=»fn» en la etiqueta que engloba al autor.
Para añadir las clases mencionadas en la función <?php the_author_posts_link(); ?>
que es la genera el enlace de author te enseño dos métodos.
Método 1: Añadiendo el siguiente filtro al fichero functions.php
de nuestro tema:
/* Filtro solución Falta Author */ 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');
Este método, la función no es más que reemplazar el típico rel=»author» que genera la función <?php the_author_posts_link(); ?>
por rel=»author» class=»fn».
Nota: A pesar de que esta solución es fácil y sencilla de aplicar, puede ocasionar problemas futuros dependiendo de los código que estés añadiendo constantemente al fichero functions.php
de su tema.
Método 2: Reemplazar la función <?php the_author_posts_link(); ?>
Este método es el que utilizo en mi tema, es necesario localizar primero la plantilla donde se genera el error falta author y reemplazar la función <?php the_author_posts_link(); ?>
correspondiente al author por las siguientes lineas:
</span><span> Publicado por </span><span class="vcard author"><?php printf( __( '%s', 'nombredeltema' ), '<a href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '" title="Entradas de ' . esc_attr( get_the_author() ) . '" rel="author"' . ' class="fn">'. get_the_author() . '</a></span>' ); ?> </span>
Nota: Reemplaza ‘nombredeltema’ por el nombre del paquete de tema que usas dejando las comillas.
Con esto ya el problema de falta author estará solucionado.
Solo hará falta esperar que el robots de Google vuelva a visitar las paginas que presentaban errores que toma entre 3 a 5 días dependiendo de cuantas actualizaciones tiene tu web, luego ir nuevamente a la herramienta search console y ver disminuir los errores.
Solucionar el error falta: updated
Al igual como sucede con el author aquí también debemos ubicar la plantilla donde se genera el error por lo general es la de las entradas single.php
o content-single.php
o la template que genera los metadatos y buscar el código <?php the_time
el error se debe a que el código no contiene una etiqueta con class=»updated» que engloba a la fecha por ende es necesaria añadirla.
Para solucionarlo solo debemos reemplazar el código por este formato:
<span class="updated"><?php the_time('j');?> de <?php the_time('F');?> de <?php the_time('Y');?></span>
Solucionar el error falta: entry-title
Este error es poco común en temas de WordPress pero si te encuentras con el error en algún tema, debes ubicar la plantilla donde se produce el error ya sea en content-single.php
content-page.php
o content-loop.php
y en la primeras lineas del código <?php post_class
localizar la palabras the_title el titulo de la publicación debe estar encerrado en una etiqueta que engloba la clase.
Para solucionar el error solo tenemos que añadir esta propiedad dentro de etiqueta <h1> de <?php the_title(); ?>
:
<h1><class="entry-title" rel="bookmark"></h1>
Solución general para los 3 errores
Una solución más simple si se te complica todo esto por verlo muy complejo, es agregar un filtro único al fichero functions.php
solo tienes que copiar y pegar el siguiente código.
//add hatom data extra function add_suf_hatom_data($content) { $t = get_the_modified_time('F jS, Y'); $author = get_the_author(); $title = get_the_title(); if (is_home() || is_singular() || is_archive() ) { $content .= '<div class="hatom-extra" style="display:none;visibility:hidden;"><span class="entry-title">'.$title.'</span> was last modified: <span class="updated"> '.$t.'</span> by <span class="author vcard"><span class="fn">'.$author.'</span></span></div>'; } return $content; } add_filter('the_content', 'add_suf_hatom_data');
El código anterior simplemente añade las clases faltantes Author, Updated, Title, de no encontrarlas en Home, Single, Archive y como extra les añade una etiqueta div oculta para que no se muestre en esas secciones.
Si usas un plugin de cache, recuerda también vaciarlo después de que hagas todos los cambios.
Luego de añadir las clases author y updated si google rastrea tu sitio y siguen los errores, tal vez sea por que usas al final de los post (Entradas relacionas o Post relacionados) y allí es donde esta el problema.
Si quieres verificar si los datos añadidos solucionan lo errores antes de que Google rastree el sitio nuevamente puedes comprobar los enlaces en su herramienta online de datos estructurados.
Conclusión
Queda claro que, si queremos mantener un historial de datos estructurados sin errores en la herramienta de google search debemos usar un tema bien escrito donde el código de la plantilla no herede los errores del programador que la diseño.
De lo contrario la solución requiere de experiencia en edición de plantillas WordPress y conocimientos de datos estructurados para tener correctamente puesto los códigos de hatom y hentry obligatorios.
Así como ya lo he dicho en otros post y lo mencione arriba también, no soy fan de usar muchos plugins si el problema se puede resolver agregando un lineas de código a la plantilla de tema, hágalo usted mismo.
Si aún continuas con el problema escribe un comentario y especifica el error, para poder ayudarte.