// Fix schema for products without price (custom designs) add_filter('woocommerce_structured_data_product', function($markup, $product) { // If product has no price or price is 0, remove offers from schema if (!$product->get_price() || $product->get_price() <= 0) { unset($markup['offers']); } return $markup; }, 10, 2);