Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jorpdesigns/0484d3a12ab31de925a109326f8cc9ab to your computer and use it in GitHub Desktop.
Save jorpdesigns/0484d3a12ab31de925a109326f8cc9ab to your computer and use it in GitHub Desktop.
Snippet to disable "Add to Cart" button if all variations for a WooCommerce product are out of stock
<?php
add_action( 'woocommerce_single_product_summary', 'replace_single_add_to_cart_button', 1 );
function replace_single_add_to_cart_button() {
global $product;
if( $product->is_type( 'variable' ) ) {
$is_soldout = true;
foreach( $product->get_available_variations() as $variation ){
if( $variation['is_in_stock'] )
$is_soldout = false;
}
if( $is_soldout ){
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
add_action( 'woocommerce_single_variation', 'sold_out_button', 20 );
}
}
}
// THE SOLD OUT BUTTON REPLACEMENT
function sold_out_button() {
global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
<?php
do_action( 'woocommerce_before_add_to_cart_quantity' );
woocommerce_quantity_input( array(
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : $product->get_min_purchase_quantity(),
) );
do_action( 'woocommerce_after_add_to_cart_quantity' );
?>
<a class="single_sold_out_button button alt disabled wc-variation-is-unavailable"><?php _e( "Sold Out", "woocommerce" ); ?></a>
</div>
<?php
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment