In older versions of WooCommerce free prices used to display as “FREE!” and products with empty prices were not publishable. Now
add_filter( 'woocommerce_get_price_html', 'hdev_price_free_zero_empty', 100, 2 ); function hdev_price_free_zero_empty( $price, $product ){ if ( '' === $product->get_price() || 0 == $product->get_price() ) { $price = '<span class="woocommerce-Price-amount amount">FREE</span>'; } return $price; }