Intereting Posts
Проблема при создании данных с помощью codeigniter Ошибка PHP Parse: синтаксическая ошибка, неожиданный '!' в Перенаправить одну страницу из HTTPS в HTTP Получение динамически созданного имени папки с использованием mkdir () в PHP Сертификат peer не может быть аутентифицирован с помощью известных сертификатов CA с использованием расширения PHP OAuth CodeIgniter – Правильный способ ссылки на другую страницу в представлении извлекать данные из контроллера в json-код воспламенителя Как отправить форму ajax в symfony2? Цена дисплея WooCommerce на кнопку добавления в корзину Как создать уникальный идентификатор заказа (только для отображения пользователя) с фактическим идентификатором заказа? Выполнить код после 10-минутной задержки в PHP От адреса не работает для заголовков PHP-заголовков довольно url в yii2 не работает Как отображать HTML в браузере постепенно в течение длительного периода времени? make switch use === сравнение нет == сравнение в PHP

Измените общий вес заказа woocomerce

Мне нужно изменить общий вес заказа на веб-сайте woocommerce.

Например: у меня есть 3 продукта в корзине: 1 – 30 г; 2 – 35; 3 – 35 г; всего = 30 + 35 + 35 = 100 г, но я хочу добавить вес упаковки в общий вес (30% от общего веса).

Пример: ((30 + 35 + 35) * 0,3) + (30 + 35 + 35) = 130 г

Я могу рассчитать его, но как изменить общий вес от 100 г до 130 г.

Для получения общего веса я использую get_cart_contents_weight (), но я не знаю, как установить новое значение.

Крючок в правильном действии фильтра

Давайте посмотрим на функцию get_cart_contents_weight() :

 public function get_cart_contents_weight() { $weight = 0; foreach ( $this->get_cart() as $cart_item_key => $values ) { $weight += $values['data']->get_weight() * $values['quantity']; } return apply_filters( 'woocommerce_cart_contents_weight', $weight ); } 

Существует крючок фильтра, который мы можем использовать: woocommerce_cart_contents_weight

Поэтому мы можем добавить функцию к этому фильтру:

 add_filter('woocommerce_cart_contents_weight', 'add_package_weight_to_cart_contents_weight'); function add_package_weight_to_cart_contents_weight( $weight ) { $weight = $weight * 1.3; // add 30% return $weight; } 

Чтобы добавить вес пакета к каждому продукту отдельно, вы можете попробовать следующее:

 add_filter('woocommerce_product_get_weight', 'add_package_to_product_get_weight'); function add_package_to_product_get_weight( $weight ) { return $weight * 1.3; } 

Но не используйте оба решения вместе.

Он работает в моем конце. Обновить общий вес до нового значения веса.

 add_action('woocommerce_cart_collaterals', 'myprefix_cart_extra_info'); function myprefix_cart_extra_info() { global $woocommerce; echo '<div class="cart-extra-info">'; echo '<p class="total-weight">' . __('Total Weight:', 'woocommerce'); echo ($woocommerce->cart->cart_contents_weight*0.3)+$woocommerce->cart->cart_contents_weight; echo '</p>'; echo '</div>'; }