Tombol Add To Cart tambahan yang mengarahkan ke checkout di WooCommerce Loop

Aug 18 2020

Saya memerlukan tombol di arsip WooCommerce yang menambahkan produk ke keranjang dan mengarahkan kembali pelanggan ke kasir. Saya menyebutnya "Beli dan Checkout".

Saya mengaitkan ke dalam arsip dengan menggunakan woocommerce_after_shop_loop_itemtindakan dan saya telah mendefinisikan global $product;argumennya.

Saya kemudian mendapatkan ID produk dan saya kemudian menentukan tambahkan ke keranjang url ( atc_urlargumen). Masalahnya, saat mengklik tambahkan ke keranjang, produk tidak ditambahkan.

Ini adalah kode saya sejauh ini dan saya tidak begitu yakin apa yang salah di sini.

add_action( 'woocommerce_after_shop_loop_item', 'buy_checkout_on_archive', 20 );
function buy_checkout_on_archive(){

    global $product;

    $pid = $product->get_id();

    $atc_url = wc_get_checkout_url().'?add-to-cart='.$pid;

    $button_class = 'loop-checkout-btn'; $button_text = __('Buy & Checkout', 'woocommerce');

        if ($product->is_type('simple')){ echo '<a href="'.$atc_url.'" class="'.$button_class.'">'.$button_text.'</a>';
    }
}

Jawaban

LoicTheAztec Aug 18 2020 at 17:57

Trik berikut akan dilakukan, menambahkan tombol tambahkan ke keranjang khusus pada arsip WooCommerce yang mengarahkan ke checkout setelah menambahkan produk ke keranjang:

add_action( 'woocommerce_after_shop_loop_item', 'buy_checkout_on_archive', 20 );
function buy_checkout_on_archive(){
    global $product; if ( $product->is_type('simple') ){
        $product_id = $product->get_id();
        $button_url = '?addtocart='.$product_id;
        $button_class = 'button loop-checkout-btn'; $button_text  = __('Buy &amp; Checkout', 'woocommerce');

        echo '<a href="'.$button_url.'" class="'.$button_class.'">'.$button_text.'</a>'; } } add_action( 'template_redirect', 'addtocart_on_archives_redirect_checkout' ); function addtocart_on_archives_redirect_checkout(){ if( isset( $_GET['addtocart'] ) && $_GET['addtocart'] > 0 ) { WC()->cart->add_to_cart( intval($_GET['addtocart']) );

        // Checkout redirection
        wp_safe_redirect( wc_get_checkout_url() );
        exit;
    }
}

Kode masuk ke file functions.php dari tema anak aktif Anda (atau tema aktif). Teruji dan berhasil.