Woocommerce — изменение общего текста при оформлении заказа и добавлении платы

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

Я пытаюсь сделать простое обновление текста на странице оформления заказа.

Так, например, в настоящее время отображается общее количество:

$ 135,65 (включая $ 10,35 GST)

Но поскольку общий вес корзины превышает 25 кг, я хочу добавить дополнительную плату в размере 2,5 долларов США, и теперь я хочу, чтобы она отображалась следующим образом:

$ 135,65 (включает в себя 10,35 GST, обработку и упаковку (2,5 доллара США))

На самом деле я заставил код работать раньше, но после последнего обновления Woocommerce мой код, похоже, больше не работает.

Вот оно:

 add_filter( 'gettext', function( $translation, $text, $domain ) {
    
    global $handlingfee;
    global $cartweight;
    
        if ($cartweight >= 25 amp;amp; $cartweight <= 39)
            $handlingfee = 2.50;        
    
        if ($cartweight >= 40 amp;amp; $cartweight <= 59)
            $handlingfee = 5.00;

        if ($cartweight >= 60 amp;amp; $cartweight <= 79)
            $handlingfee = 7.50;

        if ($cartweight >= 80 amp;amp; $cartweight <= 99)
            $handlingfee = 10.00;

        if ($cartweight >= 100 amp;amp; $cartweight <= 119)
            $handlingfee = 12.50;

        if ($cartweight >= 120 amp;amp; $cartweight <= 139)
            $handlingfee = 15.00;

        if ($cartweight >= 140 amp;amp; $cartweight <= 159)
            $handlingfee = 17.50;

        if ($cartweight >= 160 amp;amp; $cartweight <= 179)
            $handlingfee = 20.00;

        if ($cartweight >= 180 amp;amp; $cartweight <= 199)
            $handlingfee = 22.50;

        if ($cartweight >= 200 amp;amp; $cartweight <= 219)
            $handlingfee = 25.00;
        
    if ($cartweight >= 25) {
        $processingfeetext = ' and <b>$' . $handlingfee . '</b> Hamp;P';
                
    }
    
    if ( $domain == 'woocommerce' ) {
        if ( $text == '(includes %s)' ) { $translation = '(includes %s' . $processingfeetext . ')'; }
    }
    return $translation;
    
}, 10, 3 );

add_filter( 'woocommerce_calculated_total', 'change_calculated_total', 10, 2 );


add_filter( 'woocommerce_calculated_total', 'change_calculated_total', 10, 2 );
function change_calculated_total( $total, $cart ) {
    
    global $handlingfee;
    global $cartweight;
    
    if ($handlingfee > 0){
        return $total   $handlingfee;
    }
    else 
    {
        return $total;
    }
    
}

  

Любая помощь будет высоко оценена.

Комментарии:

1. Что сразу бросается в глаза в вашем коде, так это двойное использование add_filter( 'woocommerce_calculated_total', 'change_calculated_total', 10, 2 );

2. И для добавления платы woocommerce_cart_calculate_fees хук кажется более подходящим. Затем отдельно напротив текста (числа) общей суммы отображается только плата