Disable add to cart button for an array of products IDs in WooCommerce

Updated for WooCommerce 3+

Use in_array() instead like:

add_filter( 'woocommerce_variation_is_purchasable', 'filter_is_purchasable', 10, 2 );
add_filter('woocommerce_is_purchasable', 'filter_is_purchasable', 10, 2);
function filter_is_purchasable($is_purchasable, $product ) {
    if( in_array( $product->get_id(), not_purchasable_ids() ) {
         return false;
    } 
    return is_purchasable;
}

Where not_purchasable_ids() is the function that returns an array of non purchasable products Ids (here simplified):

function not_purchasable_ids() {
     return array( 37, 53, 128, 129 );
}

This code goes in functions.php file of your active child theme (or active theme). Tested and works.

Leave a Comment