WooCommerce按钮清除购物车,添加一个项目并转到结帐

时间:2018-02-09 12:13:08

标签: php wordpress woocommerce cart checkout

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

  1. 清除购物车
  2. 将特定项目添加到购物车
  3. 直接结帐
  4. (在结账时禁用或隐藏菜单栏)< -I尝试使用JavaScript但失败了
  5. 我有一个调用链接的按钮: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()在我的函数中添加项目,每次我想在商店中手动添加项目时都会这样做,而不是仅仅点击着陆页上的按钮。 / p>

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

    请帮助。

1 个答案:

答案 0 :(得分:1)

首先,您需要在表单中嵌入自定义按钮。所以这是一个简单的短代码,可以在内容编辑器或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文件中。

经过测试和工作。

  

但要禁用或隐藏您的&#34;菜单栏&#34;在结帐时,我真的不知道......这应该是另一个有更多细节的新问题......