WooCommerce套餐价格(循环2次)产生倍增的价格成本

WooCommerce套餐价格(循环2次)产生倍增的价格成本,woocommerce,hook-woocommerce,woothemes,Woocommerce,Hook Woocommerce,Woothemes,使用这个过滤器,woocommerce\u package\u rates,它开始工作,但是在加载结帐页面时,它似乎会多次加载这个过滤器 例如。 如果运费是20美元。我需要把这个乘以2,应该是40美元。 但它会再次循环,变成80美元。 当我第一次加载收银台时,它显示了正确的价格,但在2秒钟后,它再次将其调整为80美元 不知道该怎么办,也不知道该如何处理 add_filter( 'woocommerce_package_rates', 'woocommerce_shipping_rates', 1

使用这个过滤器,woocommerce\u package\u rates,它开始工作,但是在加载结帐页面时,它似乎会多次加载这个过滤器

例如。 如果运费是20美元。我需要把这个乘以2,应该是40美元。 但它会再次循环,变成80美元。 当我第一次加载收银台时,它显示了正确的价格,但在2秒钟后,它再次将其调整为80美元

不知道该怎么办,也不知道该如何处理

add_filter( 'woocommerce_package_rates', 'woocommerce_shipping_rates', 10, 2);
function woocommerce_shipping_rates($rates, $package) {
    $multiplier = 2;

    foreach ( $rates as $rate_key => $rate ){
        if( 'canada_post' === $rate->method_id ) {
            $has_taxes = false;

            // Set the new cost
            //echo "CALC:". $rate->cost ." * ". $multiplier ;
            $rates[$rate_key]->cost = $rate->cost * $multiplier ;

            // Taxes rate cost (if enabled)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $tax > 0 ){
                    // New tax calculated cost
                    $taxes[$key] = $tax * $multiplier ;
                    $has_taxes = true;
                }
            }
            // Set new taxes cost
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }

    return $rates;
}