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

前端 未结 2 1251
长发绾君心
长发绾君心 2020-12-21 14:39

I\'m trying to add a custom link button that leads to Contact page - within first if condition that displays \"Contact us\" text with custom URL on the butt

相关标签:
2条回答
  • 2020-12-21 15:07

    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 function
    function 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 category
    add_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 category
    add_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.

    0 讨论(0)
  • 2020-12-21 15:09

    Add filter priority in hooks

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

    0 讨论(0)
提交回复
热议问题