woocommerce изменить цену на странице оформления заказа и корзины

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

до сих пор я мог получить общую сумму и изменить ее, используя это:

function action_woocommerce_before_cart_totals(  ) { 
 global $woocommerce;

 $woocommerce->cart->total  = $woocommerce->cart->total*0.25;
   var_dump( $woocommerce->cart->total);}; 

Проблема в том, что когда я перехожу на страницу оформления заказа, не берется общая сумма, рассчитанная в functions.php.

Спасибо за помощь.


person Hanane    schedule 07.04.2017    source источник
comment
Похоже, вам нужна надстройки продукта WooCommerce   -  person helgatheviking    schedule 07.04.2017


Ответы (2)


Вы также можете использовать ловушку woocommerce_review_order_before_order_total одновременно, чтобы отображать вашу индивидуальную цену при оформлении заказа, следующим образом:

add_action( 'woocommerce_review_order_before_order_total', 'custom_cart_total' );
add_action( 'woocommerce_before_cart_totals', 'custom_cart_total' );
function custom_cart_total() {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;

    WC()->cart->total *= 0.25;
    //var_dump( WC()->cart->total);
}

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

Этот код протестирован и работает.

person LoicTheAztec    schedule 07.04.2017
comment
да, он работает отлично, но когда я выбираю один из способов оплаты, он не берет сумму, рассчитанную в functions.php. Большое спасибо, я буду искать решение для этого. Спасибо еще раз. - person Hanane; 08.04.2017
comment
@LoicTheAztec Хорошая штука, можем ли мы сделать кнопку и обновить цену с помощью ajax, используя: jQuery (document.body) .trigger (update_checkout); - person mysticalghoul; 12.10.2017

Платежный шлюз всегда использует переменную $ order-> get_total () для получения общей суммы корзины. Поэтому для настройки используйте этот фильтр woocommerce_order_amount_total для своей функции, если вы выполните следующие шаги. Ваш платежный шлюз всегда показывает сумму, которую вы изменили.

add_filter( 'woocommerce_order_amount_total', 'custom_cart_total' );
function custom_cart_total($order_total) {
  return $order_total *= 0.25;
}
person Saminathan K    schedule 21.10.2017