从 Woocommerce 中的 url 变量添加购物车费用
问题:从 Woocommerce 中的 url 变量添加购物车费用 使用 Woocommerce,这个网站有两种类型的产品按钮: 加入购物袋和 2.联系我们订购。 当点击“联系我们订购”按钮时,访问者将被重定向到“联系我们订购”页面中的联系表格。此联系表格是使用联系表格 7 插件构建的。 对于某些产品,联系表格有一个专用的复选框字段,他们可以在其中选择衬里。根据他们选择的衬里,我将访问者重定向到结
·
问题:从 Woocommerce 中的 url 变量添加购物车费用
使用 Woocommerce,这个网站有两种类型的产品按钮:
- 加入购物袋和
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 而不是我试图从$_GET
值产生的费用,但它仍然有效。任何想法?
使用联系表格 7 dom 事件“wpcf7submit”完成从联系我们到订单页面到结帐页面的重定向,并使用单独的函数将产品添加到购物车。
解答
更新:您需要先在会话中获取查询的 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 文件中。测试和工作。
更多推荐
已为社区贡献13074条内容
所有评论(0)