禁用购物车页面

时间:2017-01-31 20:29:21

标签: php wordpress woocommerce checkout cart

我想一定禁用WooCommerce购物车功能。

我的商店只有一个产品,所以不需要购物车。

我想要的流程是点击购买按钮 - >去结帐页面。

Incase用户返回并重做同样的过程,结账页面不会显示2个产品总结仅购买1.

有关如何顺利实现这一目标的任何提示?

谢谢,

2 个答案:

答案 0 :(得分:3)

您需要4个代码段:

1)禁用数量按钮(在产品页面上):

add_filter( 'woocommerce_is_sold_individually', '__return_true' );

2)添加购物车验证,只允许购物车中的一种产品

add_action( 'woocommerce_add_to_cart_validation', 'check_product_is_in_cart' );
function check_product_is_in_cart() {
    WC()->cart->empty_cart();
    return true;
}

3)将产品添加到购物车(使用现代语法)时结帐重定向客户:

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
    // OR ALSO: 
    // return get_permalink(get_option('woocommerce_checkout_page_id'));
}

此答案的代码(使用正确的新语法):Woocommerce add to cart button redirect to checkout

4)将购物车页面重定向到结帐页面(如果是):

add_action('template_redirect', 'skip_cart_page_redirection_to_checkout');
function skip_cart_page_redirection_to_checkout() {
    if(is_cart()){
        wp_redirect(WC()->cart->get_checkout_url());
        // OR ALSO:
        // wp_redirect( get_permalink( get_option( 'woocommerce_checkout_page_id' ) ) );

        exit; // This is mandatory with wp_redirect()
    }
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

代码经过测试并有效。

禁止在add-to-cart操作上重定向到购物车,在商店页面和存档页面上停用Ajax add-to-cart (可选)

  

您还可以在WooCommerce中禁用某些设置>设置>产品>显示(标签)

可选择禁用2个选项(并保存设置)enter image description here

答案 1 :(得分:0)

如果您需要跳过购物车页面,最简单的方法是转到 Woocommerce->设置 - >结帐并将购物车页面设置为" Checkout"页

或使用此代码段

add_filter('add_to_cart_redirect', 'themeprefix_add_to_cart_redirect');
function themeprefix_add_to_cart_redirect() {
 global $woocommerce;
 $checkout_url = $woocommerce->cart->get_checkout_url();
 return $checkout_url;
}

在Woocommerce中成功添加后,不要忘记禁用Ajax添加到购物车并重定向到购物车页面 - >设置 - >产品 - >显示 如果您使用第一种方法,则可以在成功添加后检查重定向到购物车页面。

对于限制,结帐中的一个项目使用此代码段。 通过这种方式,客户只能购买一件商品,如果顾客转到另一件商品并试图购买,则会清洁购物车并添加最后一件商品。

add_filter( 'woocommerce_add_cart_item_data', 'woo_custom_add_to_cart' );
function woo_custom_add_to_cart( $cart_item_data ) {
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    return $cart_item_data;
}