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 );