Удалить примененную указанную c плату из корзины программно - PullRequest
1 голос
/ 19 января 2020

Я применил указанную комиссию c к моей корзине WooCommerce следующим образом:

WC()->cart->add_fee( __( "Delivery Fee"), 50);

Код, приведенный выше, заключается в том, что в дополнение к сумме промежуточного итога и стоимости доставки добавляется Стоимость доставки. Плата на общую сумму и показывает общую сумму правильно.

Я хочу удалить программные сборы программным путем, но я не могу этого сделать.

Я пытался это сделать, но это НЕ работает:

WC()->cart->remove_fees( __( "Delivery Fee"));

Вот мой полный код:

add_action( 'woocommerce_before_cart', 'custom_fees' );
function custom_fees() {
    // Add Fees - This WORKS
    WC()->cart->add_fee( __( "Delivery Fee"), 50);

    // Remove Fees - This DOES NOT WORK
    WC()->cart->remove_fees( __( "Delivery Fee"));
}

Как программно удалить примененные сборы без необходимости очищать корзину?

1 Ответ

2 голосов
/ 20 января 2020

Зависит от того, как вам это нужно, вот одно решение:

add_action( 'woocommerce_before_calculate_totals', 'custom_fees' );
function custom_fees() {
    // Add Fees - This WORKS
    WC()->cart->add_fee( __( "Delivery Fee"), 50); // gets removed
    WC()->cart->add_fee( __( "Delivery Fee2"), 150); // will not be removed.

    $fees = WC()->cart->get_fees();
    foreach ($fees as $key => $fee) {
        if($fees[$key]->name === __( "Delivery Fee")) {
            unset($fees[$key]);
        }
    }
    WC()->cart->fees_api()->set_fees($fees);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...