php - WooCommerce 按钮可清除购物车、添加一件商品并前往结帐

标签 php wordpress woocommerce cart checkout

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

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

我有一个调用链接的按钮: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]");

当您按下该自定义按钮时,将触发这个自定义 Hook 函数。它将:

  • 空购物车,
  • 将产品 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…

关于php - WooCommerce 按钮可清除购物车、添加一件商品并前往结帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705589/

相关文章:

javascript - Highcharts 无法通过 AJAX 运行

php - 将 Zend_Db 与 ORM 类混合

php - DomDocument/DOMXPath - 如何通过 itemprop 和 img src 获取 HTML Dom 元素

php - 隐藏 WooCommerce 中特定运输方式的结帐运输字段部分

php - MySQL 3 链接表...查找不在特定组中的用户

css - 如何在 WordPress 上删除移动设备的填充

php - 如何在 wp_nav_menu 中添加类以链接?

wordpress - Woocommerce - 自定义电子邮件类会创建重复的电子邮件

css - WooCommerce 边栏事件选项卡 CSS

wordpress - WooCommerce:单独的登录页面和注册页面