根据费用有条件地自定义 WooCommerce 购物车总输出

Conditionally customize WooCommerce cart grand total output based on a fee

我尝试做一件非常简单的事情,但对我来说我没有让它工作。

这是来自wc-cart-functions.php

        if ( ! empty( $tax_string_array ) ) {
            $taxable_address = WC()->customer->get_taxable_address();
            $estimated_text  = WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping()
                ? sprintf( ' ' . __( 'estimated for %s', 'woocommerce' ), WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] )
                : '';
            $value .= '<small class="includes_tax">' . sprintf( __( '(includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) . $estimated_text ) . '</small>';
        }
    }

    echo apply_filters( 'woocommerce_cart_totals_order_total_html', $value );
}

如果应用任何 $fee,$value 应该不同。 但是如果我检查,我只能从 $fee 变量中得到 0.00 € 值。

有人可以帮我简单地在变量中应用 FEE 的值并签入一个简单的 if 子句,例如:

if fee is applied ---> 1
else ---> 2

我该怎么做?

如您所见,您可以使用位于 wc-cart-functions.php 核心代码中的 woocommerce_cart_totals_order_total_html 过滤器挂钩来更改大车总计的输出:

add_filter( 'woocommerce_cart_totals_order_total_html', 'custom_cart_totals_order_total_html', 10, 1 );
function custom_cart_totals_order_total_html( $value ) {
    // Get the fee cart amount
    $fees_total = WC()->cart->fee_total;

    // HERE is the condition
    if( ! empty($fees_total) && $fees_total != 0 ){
        // Change/customize HERE $value (just for test)
        $value .= " <small>($fees_total)<small>";
    }

    // Always return $value
    return $value;
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。

此代码已经过测试并且有效。

Never overide core files, as this is something prohibited, dangerous and not convenient for many reasons

您需要自定义条件中的代码 $value