public function calculate_fees( $fees ){
global $woocommerce;
$cart_subtotal = $woocommerce->cart->subtotal;
$additional_fee = 0; // Additional fee
$additional_fee_text = __('Assembling fee : ', 'dornaweb');
if( $_POST['assembly_fee'] === 'flat_assembly_rate' ){
$additional_fee = intval( dw_option('flat_assembly_rate') ) ?: 0; // flat assembly fee
$additional_fee_text .= __(' ( assembly, no warranty )', 'dornaweb');
} elseif( $_POST['assembly_fee'] === 'percentage_assembly_fee' ) {
$additional_fee = dw_option('percentage_assembly_fee') ? ( ( intval( dw_option('percentage_assembly_fee') ) / 100 ) * $cart_subtotal ) : 0; // percentage assembly fee
$additional_fee_text .= __(' ( assembly + one year warranty )', 'dornaweb');
}
$woocommerce->cart->add_fee( $additional_fee_text, intval( $additional_fee ), 1 );
}
add_action( 'woocommerce_cart_calculate_fees', array( $this, 'calculate_fees' ) );
让我更多地解释一下这个向导(组装您的PC):我们在本节中有3个步骤,
我也尝试添加费用,当我添加产品到购物车,但它不工作的方式,当我到购物车页面,没有额外的费用,以这种方式
/* User chooses list of products ( mainboard, ram, ... ) and can choose quantity of each product
and also can choose whether he/she wants to get an assembled computer
or just wants to buy the products individually,
then when he/she hits submit products get added to cart all together
in this step assembling fee should be added and calculated in cart total */
if( !empty( $_POST['action'] ) && $_POST['action'] == 'add' ){
/**
* Add each product to cart based on user choice
*/
foreach( $_POST['products'] as $product_id => $data ) {
WC()->cart->add_to_cart( $product_id, $data['qty'] );
}
/**
* Add additional fees
*/
WC()->cart->add_fee( 'Assembling fee', 10 ); // 10 is an example , the fee differs depending on user choice ( no assemble:0, assemlby+warranty:5% of the cart subtotal, assembly+no warranty: a flat fee eg. 20$ )
WC()->cart->calculate_fees();
/**
* Redirect to cart
*/
wp_safe_redirect( WC()->cart->get_cart_url() );
}
这对我起作用了,以防有人有同样的问题:当产品添加到购物车时,我设置了一些会话,当购物车得到付款或清空时,我取消设置这些会话。
if( !empty( $_POST['action'] ) && $_POST['action'] == 'add' ){
/**
* Add each product to cart based on user choice
*/
foreach( $_POST['products'] as $product_id => $data ) {
WC()->cart->add_to_cart( $product_id, $data['qty'] );
}
/**
* We set sessions after products added to cart
*/
WC()->session->set( 'MY_SESSION', 'My_value' );
/**
* Redirect to cart
*/
wp_safe_redirect( WC()->cart->get_cart_url() );
}
现在,当客户被重定向到另一个页面(在本例中是购物车页面)时,我们可以根据该会话确定他/她的购物车的附加费用
function dw_calculate_fees( $cart_object ){
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
if( ! WC()->session->MY_SESSION ) return;
$cart_subtotal = $woocommerce->cart->subtotal;
$additional_fee = null;
if( WC()->session->MY_SESSION === 'example_a' ){
$additional_fee = 1;
} elseif( WC()->session->MY_SESSION === 'example_b' ) {
$additional_fee = 2;
} else{
$additional_fee = 0;
}
if( ! is_null( $additional_fee ) ) {
$woocommerce->cart->add_fee( 'Additional fee ', intval( $additional_fee ), 1 );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'dw_calculate_fees' );
并且我们需要在购物车被支付或清空时取消设置这些会话:
add_action( 'woocommerce_cart_emptied', 'dw_unset_fee_session' );
function dw_unset_fee_session(){
unset( WC()->session->MY_SESSION );
}
WooCommerce插件添加到购物车每件物品更多的费用。 客户在购物车中选择以下内容: 产品A(大项目)-300美元 产品B(大项目)-500美元 产品C(普通项目)-30美元 产品D(普通商品)-10美元 让我们假设“大项目-正常项目”的规则如下: 大件商品-收费: 20美元/件 正常项目-收费:低于150美元,免费送货;超过150美元,将收取20美元的费用 如何让它自动当点击添加到购物车按钮
我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。
在商品分类页面上,当有人点击“添加到购物车”时,WooCommerce通过Ajax在此按钮下方添加“查看购物车”。我发现处理这个的脚本是 /assets/js/frontend/add-to-cart.js 现在,我想添加"Procceed to check out",这样某人就可以立即去结账。 这是脚本的输出: 有没有人做过类似的事情?
这真是个奇怪的问题。我使用的是Woocommerce,并且在结帐页面上为用户添加了一个选择退出/添加运输保险的选项。复选框连接到一个AJAX函数,该函数执行它应该执行的操作。费用加起来很好。每次以任何方式更改购物车时,费用都会被删除、重新计算并再次添加到购物车中。代码的这一部分工作正常。 问题是网站的实际总数不起作用。我使用以下代码访问总数: 这可以很好地计算其余费用,但忽略了代表运输保险的费用。
我正在使用Woocommerce,正在搜索一种方法来隐藏单个产品页面上的“添加到购物车”按钮,如果该产品是免费的-我正在进行大型CSV导入,并且一些产品的价格设置为零-我只想隐藏这些产品上的“添加到购物车”按钮,因此这些产品不可购买。 已经在支持页面上问过了,但没有成功 问候
问题内容: 我正在尝试使用指令根据某个属性的值将属性添加到指令。不幸的是,这对我不起作用。我设置了一个简单的示例来演示正在发生的事情。 柱塞示例 问题答案: 编辑 在阅读了Angular Repo中提到的GitHubIssue之后,我终于明白了。 您需要使用更高的指令设置一个属性,并将其属性设置为true(在编译我们的指令后,跳过所有其他指令的编译)。然后在函数中,我们将编译整个元素本身。但是在此