Woocommerce: Como añadir marcaje “brand” en el schema products

Como sabréis, Woocommerce, sin ningún otro plugin, no te hace el marcaje json-ld del campo “brand” porque Woocommerce no incluye la marca de producto por defecto. De hecho, si tienes varias marcas necesitarás el plugin WooCommerce Brands para añadir la marca en woocommerce, pero si es una tienda monomarca no te hará falta, ya que insertaremos la variable a pelo.

¿Que hay otros plugins mejores para hacer esto? Quizás si, quizás no, por ahora lo vamos a probar con este plugin que es el oficial. Si conocéis alguno que ya integre el marcaje de “marca” en los datos estructurados, ¡Bingo! pero era el plugin que el cliente tenía instalado y no le podía cambiar por otro.

Añadir el marcaje en json-ld dentro del archivo correspondiente

Debemos acceder al archivo de woocommerce donde crea los datos estructurados de producto para insertar este marcaje de marca, para hacerlo de este modo hay que ir al archivo:

tuweb.com/wp-content/plugins/woocommerce/includes/class-wc-structured-data.php

Añadir en la línea 197 aprox.:

$brand = array_shift(wc_get_product_terms($product->id, 'product_brand', array( 'fields' => 'names' ) ));

Si por otro lado, quieres aplicar siempre la misma marca (e-commerce mono marca) podemos hacerlo así de fácil, a parte de ahorrarte un plugin ;),  substituir la línea 197 por esta:

$brand = 'Tu marca';

Y en la línea 204 aprox., dentro del array, tenemos que añadir la variable brand al final de todo, quedando así:

$markup = array(
            '@type'       => 'Product',
            '@id'         => $permalink . '#product', // Append '#product' to differentiate between this @id and the @id generated for the Breadcrumblist.
            'name'        => $product->get_name(),
            'url'         => $permalink,
            'description' => wp_strip_all_tags( do_shortcode( $product->get_short_description() ? $product->get_short_description() : $product->get_description() ) ),
            'brand'       => $brand,
);

¡Bingo, ya funciona! el marcaje de “brand” dentro del schema product y funcionando.

¿Cuál es el problema de este ajuste chusquero? A la que haces una actualización de woocommerce todo este código se pierde, vamos que “se va a la p***”, como el de la moto.

¿Hay una solución definitiva? Añadir este marcaje brand mediante función en un archivo functions.php del child theme.