当前位置: 首页 > 知识库问答 >
问题:

从WooCommerce中的url变量添加购物车费用

祁星阑
2023-03-14

通过Woocommerce,该网站有两种产品按钮:

  1. 添加到购物袋和
  2. 联系我们订购

当点击“联系我们订购”按钮时,访客将被重定向到“联系我们订购”页面中的联系表单。此联系人表单是使用联系人表单7插件构建的。

对于一些产品,联系人表单有一个专属的复选框字段,他们可以在其中选择衬里。根据他们选择的衬里,我将访问者重定向到结账页面,并通过URL传递一些值。

例如:https://milanshopping.co.uk/checkout/?val=15

functions.php文件中,我使用了以下代码:

 add_action( 'woocommerce_cart_calculate_fees','milanshopping_add_lining_fees' ); 
 function milanshopping_add_lining_fees() { 
     if ( is_admin() && ! defined( 'DOING_AJAX' ) )
         return;

    if(isset($_GET['val'])){

        if($_GET['val'] == 15){
            $leather_fee = 15;
        }else{
            $leather_fee = 20;  
        } 

    }

    if($leather_fee != 0 ){
        WC()->cart->add_fee( 'Leather fee', $leather_fee);        
    }    

}

但是,即使存在$_GET值,这也无法添加费用。我通过调用echo$_GET['val']进行了检查,并且打印了值。

但是如果我在if语句之外添加以下代码,

WC()->cart->add_fee( 'Leather fee', $leather_fee);

虽然添加的费用为0,而不是我试图从$\u GET值生成的费用,但它仍然有效。有什么想法吗?

使用contact form 7 dom事件“wpcf7submit”完成从contact us到order页面到checkout页面的重定向,并使用单独的函数将产品添加到购物车。

共有1个答案

农飞星
2023-03-14

更新:您需要首先在会话中获取查询到的url变量值,方法如下:

add_action( 'template_redirect', 'grab_fee_query_var' );
function grab_fee_query_var() {
    session_start();

    // Not on checkout page
    if( ! is_admin() && isset($_GET['val']) ) {
        $_SESSION['leather_fee'] = $_GET['val'];
        WC()->session->__unset('leather_fee');
    }
}

add_action( 'woocommerce_cart_calculate_fees','add_custom_cart_fee' );
function add_custom_cart_fee() {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if(isset($_SESSION['leather_fee']) && ! WC()->session->__isset('leather_fee') ){
        $value = $_SESSION['leather_fee'] == 15 ? 15 : 20;
        WC()->session->set('leather_fee', $value );
    }

    if( WC()->session->__isset('leather_fee') ) {
       $leather_fee = WC()->session->get('leather_fee');
       WC()->cart->add_fee( 'Leather fee', $leather_fee);
    }
}

代码进入活动子主题(或活动主题)的function.php文件。测试和工作。

 类似资料:
  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 在商品分类页面上,当有人点击“添加到购物车”时,WooCommerce通过Ajax在此按钮下方添加“查看购物车”。我发现处理这个的脚本是 /assets/js/frontend/add-to-cart.js 现在,我想添加"Procceed to check out",这样某人就可以立即去结账。 这是脚本的输出: 有没有人做过类似的事情?

  • 最初,我选择了一个包(Woo订阅) 然后添加了所有详细信息。 但未提交。 回到网站,所以再次购买我需要选择一个包。所以我选择了这个包,并填写了详细信息,然后转到付款包。 现在在我的购物车中,两个包都存在(即我没有第一次购买就选择的包和最近的包) 如何修复此问题,使最新选定的一个在购物车中,而较早的一个在选定最新的一个后立即删除。 我尝试了这个Woocommerce从购物车中删除所有产品,并将当前产

  • 如果有人能给我一个提示,表明我做错了什么,那将是一个很大的帮助。

  • 问题内容: 我有一个包含以下数据的项目: 当用户单击“添加到购物车”时,我想使用WC API发出Ajax请求并将上述项目添加到购物车。 然后,我想在购物车页面上使用WC API发出另一个Ajax请求并检索购物车的内容。 我还没有从客户端使用Javascript找到任何文档(正式或非正式)。 有谁知道并且可以给我提供一个例子吗? 另外,有谁知道为什么WooCommerce Api文档如此恐怖(缺少有

  • 我正在使用Woocommerce,正在搜索一种方法来隐藏单个产品页面上的“添加到购物车”按钮,如果该产品是免费的-我正在进行大型CSV导入,并且一些产品的价格设置为零-我只想隐藏这些产品上的“添加到购物车”按钮,因此这些产品不可购买。 已经在支持页面上问过了,但没有成功 问候