Изменить корзину в WooCommerce

Я столкнулся с проблемами, когда общая сумма корзины отображает только 0

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

Так, например, если клиент добавит предметы стоимостью 100 долларов, они будут платить только 10 долларов США изначально или (10%) промежуточного итога в качестве общей стоимости.

Я взял код отсюда: измените total и tax_total Woocommerce и настройте его следующим образом:

add_action('woocommerce_cart_total', 'calculate_totals', 10, 1); function calculate_totals($wc_price){ $new_total = ($wc_price*0.10); return wc_price($new_total); } 

Но общая сумма показывает 0.00, когда этот код включен. Если удалить код, я получаю стандартную сумму.

Я также не мог найти на сайте woocommerce, где указан полный api, только общие статьи, связанные с тем, как создать плагин.

Любая помощь или точка в правильном направлении были бы замечательными.

    Первый крюк woocommerce_cart_total – это крючок фильтра , а не крючок действия. Также как аргумент $ wc_price в woocommerce_cart_total – это отформатированная цена , вы не сможете увеличить его на 10%. Вот почему он возвращает ноль.

    WooCommerce Version 3.0+: некоторые свойства WC_Cart могут быть доступны напрямую

    Лучше использовать пользовательскую функцию, подключенную в woocommerce_calculate_totals action hook
    сюда:

     // Tested in WooCommerce versions 2.6.x and 3.0+ add_action( 'woocommerce_calculate_totals', 'action_cart_calculate_totals', 10, 1 ); function action_cart_calculate_totals( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; if ( !WC()->cart->is_empty() ): ## Displayed subtotal (+10%) // $cart_object->subtotal *= 1.1; ## Displayed TOTAL (+10%) // $cart_object->total *= 1.1; ## Displayed TOTAL CART CONTENT (+10%) $cart_object->cart_contents_total *= 1.1; endif; } 

    Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

    Также возможно использовать метод WC_cart add_fee() в этом крюке или использовать его отдельно, как в ответе Кристины .

    Это не отвечает на этот вопрос. Лоис делает. Это еще один способ сделать это, чтобы показать, что позиция составляет 10%:

     function prefix_add_discount_line( $cart ) { $discount = $cart->subtotal * 0.1; $cart->add_fee( __( 'Down Payment', 'yourtext-domain' ) , -$discount ); } add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' ); 

    введите описание изображения здесь