WooCommerce लूप पर चेकआउट करने के लिए अतिरिक्त Add To Cart बटन को पुनः निर्देशित करें

Aug 18 2020

मुझे WooCommerce संग्रह पर एक बटन की आवश्यकता है जो उत्पाद को कार्ट में जोड़ता है और जो ग्राहक को चेकआउट के लिए फिर से निर्देशित करता है। मैं इसे "खरीदें और चेकआउट" कहता हूं।

मैं woocommerce_after_shop_loop_itemकार्रवाई का उपयोग करके संग्रह में हुक कर रहा हूं और मैंने global $product;तर्क को परिभाषित किया है।

मुझे फिर उत्पाद आईडी मिलती है और मैं फिर ऐड टू कार्ट url ( atc_urlतर्क) को परिभाषित करता हूं । समस्या यह है कि ऐड टू कार्ट पर क्लिक करते समय, उत्पाद जोड़ा नहीं जाता है।

यह मेरा अब तक का कोड है और मुझे यकीन नहीं है कि यहां क्या गलत है।

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>';
    }
}

जवाब

LoicTheAztec Aug 18 2020 at 17:57

निम्नलिखित चाल करेंगे, WooCommerce अभिलेखागार पर कस्टम बटन को कार्ट बटन में जोड़ना जो कार्ट में उत्पाद जोड़ने के बाद चेकआउट करने के लिए रीडायरेक्ट करता है:

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

कोड आपके सक्रिय चाइल्ड थीम (या सक्रिय थीम) की functions.php फाइल में जाता है। परीक्षण किया और काम करता है।