Si en WooCommerce un producto es gratuito, por defecto se muestra 0,00€ como precio. Para mostrar un texto en su lugar, por ejemplo, «GRATIS», incluye el siguiente snippet de código:
add_filter( 'woocommerce_get_price_html', 'wc_precio_producto_gratuito', 9999, 2 );
function wc_precio_producto_gratuito( $price, $product ) {
if ( '' === $product->get_price() || 0 == $product->get_price() ) {
$price = '<span class="woocommerce-Price-amount amount">GRATIS</span>';
}
return $price;
}