Adding more structured data to WooCommerce products

A theme I was using had the notion of “brand” built into it, however this wasn’t being added to the WooCommerce structured data.

It’s quite simple to do.  Whilst at it, I added the product gallery images.

See the code..

add_filter( 'woocommerce_structured_data_product', function( $markup, $product ) {

  // add Brand
  if($brand = $product->get_attribute( 'pa_brand' )) {
    $markup['brand'] = $brand;

  // product gallery images
  if($attachment_ids = $product->get_gallery_image_ids()) {
    $gallery_images = array($markup['image']);
    foreach( $attachment_ids as $attachment_id ) {
      $gallery_images[] = wp_get_attachment_url( $attachment_id );

    $markup['image'] = $gallery_images;

  return $markup;
}, 10, 2 );

For my theme the brand attribute was named pa_brand.  Rename this for your purposes.

Once you’ve generated your structured data you can see what google thinks of it on their rich results test.