Replace Add to cart button on Woocommerce Single Product Pages for a product category Replace Add to cart button on Woocommerce Single Product Pages for a product category wordpress wordpress

Replace Add to cart button on Woocommerce Single Product Pages for a product category


For your product category ID 64, the following code will replace add to cart button by a custom button in single product pages and by a linked button to the product on archives pages:

// The custom replacement button functionfunction custom_product_button(){    // HERE your custom button text and link    $button_text = __( "Custom text", "woocommerce" );    $button_link = '#';        // Display button    echo '<a class="button" href="'.$button_link.'">' . $button_text . '</a>';}// Replacing the single product button add to cart by a custom button for a specific product categoryadd_action( 'woocommerce_single_product_summary', 'replace_single_add_to_cart_button', 1 );function replace_single_add_to_cart_button() {    global $product;        // Only for product category ID 64    if( has_term( '64', 'product_cat', $product->get_id() ) ){        // For variable product types (keeping attribute select fields)        if( $product->is_type( 'variable' ) ) {            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );            add_action( 'woocommerce_single_variation', 'custom_product_button', 20 );        }        // For all other product types        else {            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );            add_action( 'woocommerce_single_product_summary', 'custom_product_button', 30 );        }    }}// Replacing the button add to cart by a link to the product in Shop and archives pages for as specific product categoryadd_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );function replace_loop_add_to_cart_button( $button, $product  ) {    // Only for product category ID 64    if( has_term( '64', 'product_cat', $product->get_id() ) ){        $button_text = __( "View product", "woocommerce" );        $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';    }    return $button;}

Code goes in function.php file of your active child theme (or theme).

Tested and works.


Add filter priority in hooks

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text',50 );