If you have products which are free, the single product template and archive loop item will display the price as “$0.00” by default. This default display could confuse users. A better options would be to display text like “Free” or “Price on application”. This snippet looks at whether a product has a price or if it is set to 0 and if true, will display custom text.
/**
* Snippet Name: WooCommerce Change "$0.00" to "Free"
* Snippet Author: ecommercehints.com
*/
add_filter( 'woocommerce_get_price_html', 'ecommercehints_change_zero_price_display', 10, 2 );
function ecommercehints_change_zero_price_display( $price, $product ) {
if (empty($product->get_price()) || $product->get_price() == 0) { // If price is not entered or set to 0
$price = __( 'Free', 'woocommerce' );
}
return $price;
}