Hide prices and checkout functionality in woocommerce

I know this question might be too broad, but I’m looking for a bit of direction. My client has a woocommerce store with 30-40 products. For whatever reason they do not want to sell online anymore, but they want to retain the product pages, information, etc. on their website.

Is there a way, using hooks or otherwise, to hide things like prices, add to cart button, etc. in woocommerce? Or should I just edit the php template files?

Related posts

Leave a Reply

3 comments

  1. luckily woocommerce has many hooks, this removes prices and buttons:

    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    

    you can dig into content-product.php and content-single-product.php if you need to remove more stuff.

    I can imagine there’s more than just the prices/buttons you want to hide/remove though (like pages/functions), this tutorial gives you some pointers

  2. Extending the above code (thanks Ewout), the following code will get rid of all prices and ‘add to cart’ buttons on all woocommerce products, as well as provide an explanation as to why. I needed the code for a website that offers direct selling products and to comply with their rules, I cannot show prices to the general public.

    Add the filter to your theme’s functions.php file.

        add_filter('woocommerce_get_price_html','members_only_price');
    
        function members_only_price($price){
    
    if(is_user_logged_in() ){
        return $price;
    }
    
    else {
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
        return 'Only <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Registered Users</a> are able to view pricing.';
          }
    
    }
    
  3. add_filter( 'woocommerce_is_purchasable', '__return_false' );
    add_filter( 'woocommerce_get_price_html', '__return_empty_string' );
    

    This will totally prevent checkout and hide all prices by:

    • Making all product non-purchasable (line 1)
    • Emptying price HTML (line 2)