Home > Back-end >  How to add target=“_blank” to add to cart button on Single Product page?
How to add target=“_blank” to add to cart button on Single Product page?

Time:11-03

I have an affiliate website
and the button add to cart is an external link
I want that it will open in a new tab
thanks a lot

CodePudding user response:

You add this piece of code to your functions.php file:

// add custom button to shop page
add_filter('woocommerce_loop_add_to_cart_link', 'shop_page_open_external_in_new_window', 10, 2);

function shop_page_open_external_in_new_window($link)
{
    global $product;
    if ($product->is_type('external')) {
        $link = sprintf(
            '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s"  target="_blank">%s</a>',
            esc_url($product->add_to_cart_url()),
            esc_attr(isset($quantity) ? $quantity : 1),
            esc_attr($product->id),
            esc_attr($product->get_sku()),
            esc_attr(isset($class) ? $class : 'button product_type_external'),
            esc_html($product->add_to_cart_text())
        );
    }

    return $link;
}

// remove default button on product page
remove_action('woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30);

// add custom button on product page
add_action('woocommerce_external_add_to_cart', 'product_page_open_external_in_new_window', 30);

function product_page_open_external_in_new_window()
{
    global $product;
    if (!$product->add_to_cart_url()) {
        return;
    }

    $product_url = $product->add_to_cart_url();
    $button_text = $product->single_add_to_cart_text();

    do_action('woocommerce_before_add_to_cart_button'); ?>
    <p class="cart">
        <a href="<?php echo esc_url($product_url); ?>" rel="nofollow" class="single_add_to_cart_button button alt" target="_blank">
            <?php echo esc_html($button_text); ?>
        </a>
    </p>
<?php
    do_action('woocommerce_after_add_to_cart_button');
}

CodePudding user response:

HTML Example:

<a href="yourlink" class="addtocart">Add to Cart</a>

Try it By jQuery

$(function() {
   
   $('.addtocart').attr('target','_blank'); 
    
});
  • Related