WooCommerce 按钮清除购物车,添加一个项目并去结账

WooCommerce Button to Clear Cart, Add One Item and go to Checkout

我需要一个独特的登陆页面上的按钮来执行此操作:

  1. 清除购物车
  2. 将特定商品添加到购物车
  3. 直接去结账
  4. (在结帐时禁用或隐藏菜单栏)<-我用 JavaScript 尝试过但失败了

我有一个调用 link 的按钮:https://www.snoooze.co/?add-to-cart= 12374

然后这个片段在我的 "functions.php"

add_filter ('woocommerce_add_to_cart_redirect', 'woo_redirect_to_checkout');
function woo_redirect_to_checkout() {
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    $checkout_url = WC()->cart->get_checkout_url();
    return $checkout_url; }

问题是,如果我使用 add_to_Cart() 在我的函数中添加该项目,它会在每次我想在商店中手动添加它时执行此操作,而不仅仅是当我单击登录页面上的按钮时.

我看到我必须以某种方式将功能分配给按钮,所以在其他网站上不会被调用,但是如何?

请帮忙。

首先,您需要在表单中嵌入一个自定义按钮。所以这是一个简单的短代码,您可以在内容编辑器或 php:

中使用
// Shortcode: Special button "add-to-cart" with form
function special_button() {
    return '<form method="post" action="">
        <button type="submit" class="button" name="add_to_cart_special">Special add to cart</button>
    </form>';
}
add_shortcode( 'special_button', 'special_button' );

// Usage: [special_button] 
// or for php: echo do_shortcode("[special_button]");

并且当您按下该自定义按钮时将触发此自定义挂钩函数。它将:

  • 空车,
  • 将产品 12374 添加到购物车
  • 重定向到结帐
  • 在结账页面显示自定义通知(可选)

代码:

// Special add to cart (empty cart before and redirect to checkout)
add_action( 'template_redirect', 'special_add_to_cart' );
function special_add_to_cart() {
    if ( isset($_POST['add_to_cart_special']) ){
        WC()->cart->empty_cart();
        WC()->cart->add_to_cart( 12374 );
        wc_add_notice( __('this product X has been added to cart'), 'notice' );
        wp_redirect( wc_get_checkout_url() );
        exit();
    }
}

所有代码进入您的活动子主题(或活动主题)的 function.php 文件。

已测试并有效。

But to disable or hide your "menu bar" in checkout, I really don't know… This should be another new question with more details…