WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

im using Woocommerce and searching for a way to hide the "Add to cart"-Button on
a single-Product page IF the product is for free - I'm making a big CSV-Import and some product-prices are set to zero - i just want to hide the "add to cart" button on these products, so these are not buyable.

already asked this on the support page, but no success


share|improve this question
Do you have the Code of your single-product.php? – fischi Aug 8 '13 at 8:54
Yes, but i dont think it would help since changes on the single-product.php has no effect on this issue. Somebody told me to "create a new function hooked into init which checks a product price, if it's zero remove the add to cart button using remove_action()" So yea, im not good at coding and can't do this on my own. Hope this helps :) – user36383 Aug 8 '13 at 9:10
up vote 3 down vote accepted

Look at the beginning of the add to cart templates in WooCommerce. At the beginning there is a check to determine whether the product is purchasable. Inside the is_purchasable() method in the product class is a filter. By default the product is not purchasable if there is no price set at all, but that can be extended to cover products for which the price is set to 0.

function wpa_109409_is_purchasable( $purchasable, $product ){
    if( $product->get_price() == 0 )
        $purchasable = false;
    return $purchasable;
add_filter( 'woocommerce_is_purchasable', 'wpa_109409_is_purchasable', 10, 2 );
share|improve this answer
Thanks alot! This was exactly the solution for my problem! – user36383 Aug 13 '13 at 7:53

As far as I understood your problem.. woocommerce has an option when you don't put any price, there will be no button at all..
Your product becomes like just a regular gallery/catalog..
Should that's what you're looking for.. perhaps the easiest way would be then to edit your csv file.. just find and replace zeros with empty space..

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.