Remove Product Prices
In this tutorial I will show a correct way of removing product prices from single product pages and shop page (product archives).
There are plenty of tutorials out there that recommend you to use woocommerce_get_price_html
hook which is totally wrong, because that hook is intended to edit the HTML of the price element. We are not going to hide prices with CSS as well.
WooCommerce connects product prices to hooks:
woocommerce_after_shop_loop_item_title
– for product archive pages,woocommerce_single_product_summary
– for single product pages.
So all we need to do is to disconnect price displaying functions from these hooks!
Please insert all the code from this tutorial to your current theme functions.php
file. Of course if you update your theme from time to time, it would be better if you prefer either a child theme or your custom plugin for that.
One more thing – maybe you don’t even need to hide product prices that way – consider making products non-purchasable.
Remove Price from Single Product Page
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

Hmm… while looking at this screenshot I have a feeling, that we do not need a “Sale” badge after all, you can read in this tutorial how to remove it.
Remove Prices from Shop Page
I have to say that this approach will also hides product prices from product categories and tags archives, search results page, related products, upsells and cross-sells.
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );

If you have any questions – maybe you would like to hide prices in certain product categories only or only for some user roles – feel free to ask in comments below.

Misha Rudrastyh
Hey guys and welcome to my website. For more than 10 years I've been doing my best to share with you some superb WordPress guides and tips for free.
Need some developer help? Contact me
This technique worked great – thanks!
Thanks for such a simple hack.
Very Thanks. it helped me a lot
This technique worked great – thanks!
Thank you so much! It worked. So simple!
Hi,
thanks for writing one of the best WordPress/WooCommerce resources on the web!
I’m wondering how to (easily ;)) turn WC into a booking platform for free events (that may later be used for events with a price). However, I’d like to not require or display prices for the free products. In the standard setup, even if the price is 0 it will still be displayed in the cart and on the checkout page.
I’m pretty sure this possible, because apparently, a plugin can turn WC into a quoting system.
So far, I’ve come up with the following:
The approach in the chosen answer of this SO topic – https://stackoverflow.com/questions/49954483/how-to-remove-order-total-from-cart-and-checkout-page-woocommerce – works for the cart page (by removing the order-total-html and then adding back the “proceed to cart”-button), but it doesn’t work for the checkout page (at least not for me).
These filters –
add_filter( 'woocommerce_cart_item_price', '__return_false' );
add_filter( 'woocommerce_cart_item_subtotal', '__return_false' );
remove the order item prices and subtotals in cart and checkout review, but don’t affect the html (that is respective table columns).
This filter –
add_filter( 'woocommerce_cart_totals_order_total_html', '__return_empty_string' );
removes the total price on the checkout page itself but doesn’t affect the review box html at all.
So here’s my question – are you aware of a method that would remove the price programmatically (without having to manually change cart or checkout template code?)
Thanks!
Thanks a lot. Helped me for real