X

Agregar Microdatos en campos de productos en WooCommerce

En un artículo anterior vimos cómo añadir campos personalizados en productos de WooCommerce, sin embargo no detallamos cómo agregar para estos campos adicionales los datos estructurados o microdatos, en este artículo veremos cómo realizar esto.

 

Generalidades

Usaremos el plugin Advanced Custom Fields para agregar el campo personalizado adicional para el producto, agregaremos un campo llamado Marca. En la siguiente imagen vemos como se ha creado el campo de marca.

Si tienes dudas sobre cómo llenar este campo para cada producto y cómo mostrarlo en el front-end de tu sitio revisa el artículo: Cómo añadir campos personalizados en productos de WooCommerce.

 

Agregando valores para la marca

Al ingresar al detalle de un producto verás que aparece un campo adicional de marca, tal como se muestra en la siguiente imagen.

 

Microdatos por defecto para un Producto

WooCommerce crea microdatos usando Json, para nuestro ejemplo definiremos el microdato adicional «brand» para un producto de acuerdo a Schema.org

Por ejemplo el siguiente código muestra algunos microdatos en formato Json:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "ItemList",
  "url": "http://encurso/wordpress_5/producto/vneck-tee/",
  "numberOfItems": "100",
  "itemListElement": [{
      "@type": "Product",
      "image": "http://encurso/wordpress_5/wp-content/uploads/2019/02/vneck-tee.jpg",
      "url": "http://encurso/wordpress_5/producto/vneck-tee/",
      "name": "Camiseta de cuello en V"
    },{
      "@type": "Product",
      "name": "..."
    }
  ],
    "offers": {
      "@type": "Offer",
      "price": "18"
    }
    ...
}
</script>

A este código Json será necesario agregar «brand» con el nombre de la marca para un determinado producto.

Puedes comprobar el json de microdatos generados viendo el código HTML en la página de detalle de producto.

 

Código para agregar Microdatos adicionales al Producto

El siguiente código agrega el microdato de marca a los microdatos ya existentes en el producto.


add_filter( 'woocommerce_structured_data_product', 'dcms_product_microdata', 10, 2 );

function dcms_product_microdata( $markup, $product ){
	if ( function_exists('get_field')){
		if ( get_field('marca')!='' ){
			$markup['brand'] = get_field('marca');			
		}
    }
    return $markup;
}

En el código anterior:

  • Usamos un hook de filtro llamado woocommerce_structured_data_product el cual hace referencia a la función dcms_product_microdata
  • La función acepta dos parámetros, sólo modificaremos el $markup que es un array en donde se guarda los microdatos
  • Comprobamos si la función get_field del plugin ACF existe
  • A través de esta función obtenemos el valor del campo marca para un producto determinado
  • Agregamos el valor obtenido en un nuevo elemento de array llamado brand
  • Finalmente retornamos el array modificado

Puedes agregar este código en el archivo functions.php de tu child theme o como parte del código de un plugin.

 

Resultado final

Como resultado obtendremos el código Json con el microdato de marca al final.

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "ItemList",
  "url": "http://encurso/wordpress_5/producto/vneck-tee/",
  "numberOfItems": "100",
  "itemListElement": [{
      "@type": "Product",
      "image": "http://encurso/wordpress_5/wp-content/uploads/2019/02/vneck-tee.jpg",
      "url": "http://encurso/wordpress_5/producto/vneck-tee/",
      "name": "Camiseta de cuello en V"
    },{
      "@type": "Product",
      "name": "..."
    }
  ],
    "offers": {
      "@type": "Offer",
      "price": "18"
    }
    ...
    "brand": "Affliction"
}
</script>

 

Conclusión

Como has podido ver, siempre que agregues campos personalizados a tus productos es recomendable igualmente agregar estos campos como microdatos siguiendo las recomendaciones de schema.org.

 

Categorías: Plugins

Ver comentarios (30)

  • "Puedes agregar este código en el archivo functions.php de tu child theme o como parte del código de un plugin"
    ¿Se supone que un plugin de marcado deberia detectar los campos adicionales que explicas como por ejemplo el "Brand"? o varia segun el plugin?

    • Hola, si usas un plugin que agrega campos teóricamente debería agregar estos campos a los microdatos, en todo caso si no los agrega tendrías que hacerlo tal como comento en este artículo.

  • Perfecto. Todo fue bien y sin problema con el campo de marca "brand". Al querer agregar un nuevo campo "aggregateRating" repitiendo la operacion, functions.php da error fatal. ¿Como resuelvo añadir varios campos con sus correspondientes microdatos? Gracias. Un saludo.

    • Hola, tendrías que detallar un poco más el error que te aparece, puedes activar el modo debug y ver exactamente el mensaje de error. Sin embargo si estas usando algún plugin para Rating en WooCommerce ya tendría que agregarte el microdato el propio plugin.

    • Hola Dani, no me queda claro a qué te refieres, en todas las versiones de WordPress se incluyen ambas taxonomías, Categorías y etiquetas, esto a nivel de WordPress sin embargo a nivel de WooCommerce igualmente tienes Categorías y Etiquetas para productos.

    • Hola lo que comentas no tiene que ver con este artículo, de manera general prueba con esta url: https://tudominio.com/wp-admin/edit-tags.php?taxonomy=product_cat&post_type=product , cambia tu dominio.com, para las etiquetas podrías hacerlo cambiando el parámetro taxonomy a product_tag, no tiene que ver con la versión de WordPress, debes tener algún tipo de problema con algún plugin o algo que haya ido mal en la actualización. Si sigues con problemas puedes comentarme detalles en el formulario de contacto.

  • Hola buenas, no entiendo mucho de programación, tengo una tienda online y quiero poner datos estructurados, comprendo que woocomerce me da unos ya preestablecidos pero no completos del todo. Con el código que das e introducir los valores que me falten sobraría?? No hace falta borrar los que te da woocommerce por defecto, no?
    Y otra pregunta,¿para añadir más valores cómo seria el código que hay que pegar debajo del de marca??

  • muchas gracias por tu articulo, muy currado.
    He seguido todos tus pasos pero en la herramienta de datos estructurados de google me sigue diciendo que me falta el campo "brand"...llevo tiempo intentándolo solucionar si éxito :(
    Si sabes de algo que pueda hacer...
    gracias de antemano

  • Hola Jhon gracias por tus tutoriales son simple y al punto.
    Yo he crado un ACF llamado “puntos” que son puntos por producto que se brindan para determinar según puntos acumulados que precio se aplicará finalmente al producto.
    He visto tus ambos tutoriales sobre campos personalizados y microdatos, mi consulta es como puedo hacer para mostrar por cada producto la suma de puntos para que el cliente sepa que precio se aplicará finalmente a su total. Esa información la querría mostrar en finalizar compra y en el mail que llega tanto a cliente como admin. ¿Se puede hacer esto?