WooCommerce Loop'ta ödemeye yönlendiren ek Sepete Ekle düğmesi

Aug 18 2020

WooCommerce arşivinde ürünü sepete ekleyen ve müşteriyi kasaya yeniden yönlendiren bir düğmeye ihtiyacım var. Ben buna "Satın Al ve Satın Al" diyorum.

woocommerce_after_shop_loop_itemEylemi kullanarak arşive bağlanıyorum ve global $product;argümanı tanımladım .

Daha sonra ürün kimliğini alırım ve ardından sepete ekle url ( atc_urlbağımsız değişken) tanımlarım . Sorun, sepete ekle'ye tıklandığında ürünün eklenmemesidir.

Şimdiye kadarki kodum bu ve burada neyin yanlış olduğundan emin değilim.

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

Yanıtlar

LoicTheAztec Aug 18 2020 at 17:57

Aşağıdakiler, ürünü sepete ekledikten sonra ödemeye yönlendiren WooCommerce arşivlerine özel bir sepete ekle düğmesi ekleyerek hile yapacak:

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

Kod, aktif alt temanızın (veya aktif temanızın) functions.php dosyasına girer. Test edildi ve çalışıyor.