WooCommerce लूप पर चेकआउट करने के लिए अतिरिक्त Add To Cart बटन को पुनः निर्देशित करें
मुझे 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>';
}
}
जवाब
निम्नलिखित चाल करेंगे, 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 & 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 फाइल में जाता है। परीक्षण किया और काम करता है।