WooCommerce退房的额外可选费用

时间:2013-11-06 作者:passatgt

我正在以WooCommerce为基础建立一家商店。我需要在结账页面上添加一个名为“运输保险”的额外复选框。一旦该字段被选中,我需要在订单总额中额外增加3美元。我可以这样添加固定费用:

function woo_add_cart_fee() {
  global $woocommerce;
  $woocommerce->cart->add_fee( __(\'Shipping Insurance\', \'woocommerce\'), 3 );

}
add_action( \'woocommerce_before_calculate_totals\', \'woo_add_cart_fee\' );
问题是,这将在订单总额中增加固定的3美元,因此它不是可选的。你知道如何处理这个问题吗?

2 个回复
最合适的回答,由SO网友:passatgt 整理而成

好的,我就是这样做的。

创建一个名为Shipping Insurance的产品,价格为3美元,确保其为隐藏产品(右侧的目录可见性)

在主题函数中使用以下代码。php文件:

add_action(\'woocommerce_cart_totals_after_shipping\', \'wc_shipping_insurance_note_after_cart\');
function wc_shipping_insurance_note_after_cart() {
global $woocommerce;
    $product_id = 669;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values[\'data\'];
    if ( $_product->id == $product_id )
        $found = true;
    }
    // if product not found, add it
if ( ! $found ):
?>
    <tr class="shipping">
        <th><?php _e( \'Shipping Insurance\', \'woocommerce\' ); ?></th>
        <td><a href="<?php echo do_shortcode(\'[add_to_cart_url id="669"]\'); ?>"><?php _e( \'Add shipping insurance (+$3)\' ); ?> </a></td>
    </tr>
<?php else: ?>
    <tr class="shipping">
        <th><?php _e( \'Shipping Insurance\', \'woocommerce\' ); ?></th>
        <td>$3</td>
    </tr>
<?php endif;
}
将$product\\U id变量更改为您创建的产品id,当您结账时,它只需将此隐藏产品添加到购物车中

SO网友:Tarei SuperChur King

这并不能完全回答您的问题,但官方WooCommerce文档中有一个与您希望实现的目标类似的示例。特别是,您正在寻找Lessons 1 and 2.

WooCommerce Documentation: Customizing checkout fields using actions and filters

希望在有人能给出更具体的答案之前,它能填补时间。

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。