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

不包括商业中计算所得税的产品

钱澄邈
2023-03-14

税是一种小费,是客户选择的购物车总数的百分比,但它应该只计算一个类别(食品)的总数,而不包括另一个类别(活动门票)。

add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
function woo_add_cart_fee( $cart ){
   if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
    return;
   }

   if ( isset( $_POST['post_data'] ) ) {
       parse_str( $_POST['post_data'], $post_data );
   } else {
       $post_data = $_POST;
   }

   if (isset($post_data['propina'])) {
       global $woocommerce;
       $porcentaje = $post_data['propina']  / 100;
       $propina = ( $woocommerce->cart->cart_contents_total ) * $porcentaje;
       WC()->cart->add_fee( 'Propina Sugerida:', $propina );
   }
}

简单地说,($)-

编辑:我想我找到了解决方案,但当产品是一种变体时,我会遇到问题

add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
function woo_add_cart_fee( $cart ){
    if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
    return;
    }

    if ( isset( $_POST['post_data'] ) ) {
    parse_str( $_POST['post_data'], $post_data );
    } else {
    $post_data = $_POST;
    }

    if (isset($post_data['propina'])) {
        global $woocommerce;

        $items = $woocommerce->cart->get_cart();
        $product_in_cart = false;
        $ticketpamount = 0;
        foreach($items as $item => $values) { 
            $_product =  $values['data'];
            $terms = get_the_terms( $_product->id, 'product_cat' );

        // second level loop search, in case some items have several categories
        foreach ($terms as $term) {
            $_categoryid = $term->term_id;
            if ( $_categoryid === 122 ) {
                //category is in cart!
                $price = get_post_meta($values['product_id'] , '_price', true);
                $ticketpamount += $price;
                $product_in_cart = true;
            }
        }
    } 

    $porcentaje = $post_data['propina']  / 100;
    if ( $product_in_cart ) {
         $propina = ( $woocommerce->cart->cart_contents_total - $ticketpamount ) * $porcentaje;
    } else {
        $propina = ( $woocommerce->cart->cart_contents_total ) * $porcentaje;
    }
    WC()->cart->add_fee( 'Propina Sugerida:', $propina );
   }
}

共有2个答案

冯皓
2023-03-14

找到解决方案,添加变量并乘以数量

add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
function woo_add_cart_fee( $cart ){
    if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
    return;
    }

    if ( isset( $_POST['post_data'] ) ) {
    parse_str( $_POST['post_data'], $post_data );
    } else {
    $post_data = $_POST;
    }

    if (isset($post_data['propina'])) {
        global $woocommerce;

        $items = $woocommerce->cart->get_cart();
        $product_in_cart = false;
        $ticketpamount = 0;
        foreach($items as $item => $values) { 
            $_product =  $values['data'];
            $terms = get_the_terms( $_product->id, 'product_cat' );

        // second level loop search, in case some items have several categories
        foreach ($terms as $term) {
            $_categoryid = $term->term_id;
            if ( $_categoryid === 122 ) {
                //category is in cart!
                //check if product is a variation and * quantity
                 if ( $item['variation_id'] ) {
                    $price = get_post_meta($values['variation_id'] , '_price', true) * $values['quantity'];
                } else {
                    $price = get_post_meta($values['product_id'] , '_price', true);
                }
                $ticketpamount += $price;
                $product_in_cart = true;
            }
        }
    } 

    $porcentaje = $post_data['propina']  / 100;
    if ( $product_in_cart ) {
         $propina = ( $woocommerce->cart->cart_contents_total - $ticketpamount ) * $porcentaje;
    } else {
        $propina = ( $woocommerce->cart->cart_contents_total ) * $porcentaje;
    }
    WC()->cart->add_fee( 'Propina Sugerida:', $propina );
   }
}
屈健柏
2023-03-14

而不是$woodcommerce-

$subtotal = 0;
foreach ( WC()->cart->get_cart() as $key => $i ) {
    $product_id = $i["product_id"];

    if ( your_product_should_be_included( $product_id ) ) {
        $subtotal += $i['line_subtotal'];
    }
}

 类似资料:
  • 我想得到10产品从一个类别在WooCommerce 例如,对于获取帖子类别的最新帖子,我使用以下代码 我想要一个代码,像这样的商业产品

  • 我想获取WooCommerce中的所有产品数据(产品sku、名称、价格、库存、可用性等),我可以使用wp查询吗?

  • OpenResty Inc. 公司为 OpenResty 提供多款商业产品。这些产品本身也 主要由OpenResty来驱动。 OpenResty XRay OpenResty XRay是新一代的应用性能管理(APM)产品,为OpenResty和其他开源软件使用,100% 使用非侵入式的动态跟踪技术。 它可以自动监控、发现、排除故障,并为广泛的用户提供修复建议。 在您运行的OpenResty应用程序

  • 这是我需要解决的问题。 创建包含输入表单的基本网页。JavaScript将嵌入到HTML文档中。 输入表格应包括: 用户名字段订单数量输入字段物料价格只读字段–订单总成本“提交按钮”的值设置为5.31只读字段,不使用任何类型的表单按钮元素用户应能够输入其名称和订单数量,然后单击“提交”。单击“提交”时,表单将计算订单总额,包括8.25%的销售税。计算后,订单总额表单字段将更新为总额,包括美元符号和

  • 问题内容: 从选择查询的开始时间和结束时间列表中,我需要找出不包括重叠时间和休息时间的总时间。 因此,在这种情况下,总计应为160分钟。 我不想使用太多循环来解决这个问题。寻找一些简单的解决方案。 问题答案: 结果是160

  • 问题内容: 下面是两行。 第一行 是的两个项目和的一个项目。 第二行 是中的两项。 根据规范 1A + 1B = 2A 但是,当计算中包括 填充 时,总和是不正确的,如下面的示例所示。 题 如何使flex box在其计算中包括填充,以使示例中的box正确排列? 问题答案: 解决方案: 设置子元素,而不是在你的项目。 问题: 计算不使用。所以; 添加到元素并不能按照规范为您提供预期的宽度 。 例如,

  • 问题内容: 谁能告诉我如何编写一个程序,其中我必须从文本文件中读取ac程序,然后计算if-else语句的数量,但不包括嵌套的if- else。在此程序中,我已经计算了文本文件中if和else的数量,但是如何从此计数中排除嵌套的if?请帮助我。 问题答案: 通常,以计数方式指定if-else语句是错误的,因为在编程语言中,if-else语句不仅是包含或的行(请考虑注释中的“ if”或“ else”词

  • 问题内容: 我需要计算两个日期之间的营业日。例如:我们7月4日放假。所以如果我的日期是date1 = 07/03/2012 date2 = 07/06/2012 由于7月4日为节假日,因此,这些日期的黑白工作日应该为1。 我有一种下面的方法来计算工作日,该工作日仅计算周末,而不计算假期。还有什么方法可以计算假期吗....请帮我。 问题答案: 假设您有一个包含所有假期的列表。 只需在您的条件中添加条