其他“添加到购物车”按钮重定向到WooCommerce Loop上的结帐

问题描述

我需要WooCommerce存档上的一个按钮,该按钮可将产品添加到购物车,并将客户重定向到结帐处。我称之为“购买和结帐”。

我正在使用woocommerce_after_shop_loop_item操作进入档案库,并且已经定义了global $product;参数。

然后获取产品ID,然后定义添加到购物车网址(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 &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文件中。经过测试,可以正常工作。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...