Php 根据Woocommerce中的购物车项目维度添加费用

Php 根据Woocommerce中的购物车项目维度添加费用,php,wordpress,woocommerce,cart,fee,Php,Wordpress,Woocommerce,Cart,Fee,我在二月份得到了很大的帮助,关于woocommerce的一个问题,我需要根据购物车的总高度自动增加费用 现在,我还需要在代码中添加一个关于项目宽度的计算。但前提是购物车中的任何物品的宽度超过25厘米(不是总宽度,因为产品是堆叠在一起的书籍,所以额外的运费是根据总高度和宽度超过25厘米计算的)。 示例: 实际起作用的是: 如果购物车总高度为3厘米或以上,将收取费用 需要什么(另外): 如果一个项目的宽度超过25厘米,将收取费用 如果购物车总高度为3厘米或以上,如果一件物品宽度超过25厘米,则

我在二月份得到了很大的帮助,关于woocommerce的一个问题,我需要根据购物车的总高度自动增加费用

现在,我还需要在代码中添加一个关于项目宽度的计算。但前提是购物车中的任何物品的宽度超过25厘米(不是总宽度,因为产品是堆叠在一起的书籍,所以额外的运费是根据总高度和宽度超过25厘米计算的)。 示例:

实际起作用的是:

  • 如果购物车总高度为3厘米或以上,将收取费用
需要什么(另外):

  • 如果一个项目的宽度超过25厘米,将收取费用
  • 如果购物车总高度为3厘米或以上,如果一件物品宽度超过25厘米,则收取费用
我一直在玩弄“”应答代码(第二个代码段),试图向其中添加一个高度变量($target_width=25;//),但我在计算中迷失了方向,不知道如何在不将其变为购物车总宽度的情况下进行尝试,我只是没有资格对代码进行这样的高级编辑。我所有不同的尝试都没有成功


感谢您的帮助。

更新:以下代码将根据需要处理您的附加物品,如果物品宽度超过25 cm,也将收取费用:

add_action( 'woocommerce_cart_calculate_fees', 'shipping_dimensions_fee', 10, 1 );
function shipping_dimensions_fee( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Your settings (here below)
    $target_height   = 3; // The defined height in cm (equal or over)
    $width_threshold = 25; // The defined item with to set the fee.
    $fee             = 50; // The fee amount

    // Initializing variables
    $total_height    = 0; 
    $apply_fee       = false;

    // Loop through cart items
    foreach( $cart->get_cart() as $cart_item ){
        // Calculating total height
        $total_height += $cart_item['data']->get_height() * $cart_item['quantity'];

        // Checking item with
        if ( $cart_item['data']->get_width() > $width_threshold ) {
            $apply_fee = true;
        }
    }

    // Add the fee
    if( $total_height >= $target_height || $apply_fee ) {
        $cart->add_fee( __( 'Dimensions shipping fee' ), $fee, false );
    }
}
代码进入活动子主题(或活动主题)的function.php文件。它应该可以工作。

代码更新:添加了一个缺少的
$width\u阈值=25