WooCommerce 루프에서 결제로 리디렉션하는 추가 장바구니에 추가 버튼

Aug 18 2020

제품을 장바구니에 추가하고 고객을 결제로 리디렉션하는 WooCommerce 아카이브의 버튼이 필요합니다. 저는 이것을 "구매 후 결제"라고 부릅니다.

woocommerce_after_shop_loop_item액션 을 사용하여 아카이브에 연결하고 있으며 global $product;인수를 정의했습니다 .

그런 다음 제품 ID를 얻고 장바구니에 추가 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 파일에 들어갑니다. 테스트 및 작동합니다.