Дополнительная опциональная плата при оформлении заказа в WooCommerce

6 нояб. 2013 г., 19:43:34
Просмотры: 19.4K
Голосов: 3

Я создаю интернет-магазин на основе WooCommerce. Мне нужно добавить дополнительный чекбокс на странице оформления заказа под названием "Страховка доставки". Когда это поле отмечено, к итоговой сумме заказа должно добавляться $3. Я смог добавить фиксированную плату следующим образом:

function woo_add_cart_fee() {
  global $woocommerce;
  $woocommerce->cart->add_fee( __('Страховка доставки', 'woocommerce'), 3 );

}
add_action( 'woocommerce_before_calculate_totals', 'woo_add_cart_fee' );

Проблема в том, что это добавляет фиксированные $3 к сумме заказа, то есть плата не является опциональной. Есть идеи, как решить эту проблему?

0
Все ответы на вопрос 2
0

Хорошо, вот как я это сделал.

Создайте товар под названием "Страховка доставки" стоимостью $3, убедитесь, что это скрытый товар (опция "Видимость в каталоге" справа).

Используйте следующий код в файле functions.php вашей темы:

add_action('woocommerce_cart_totals_after_shipping', 'wc_shipping_insurance_note_after_cart');
function wc_shipping_insurance_note_after_cart() {
global $woocommerce;
    $product_id = 669;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values['data'];
    if ( $_product->id == $product_id )
        $found = true;
    }
    // если товар не найден, добавляем его
if ( ! $found ):
?>
    <tr class="shipping">
        <th><?php _e( 'Страховка доставки', 'woocommerce' ); ?></th>
        <td><a href="<?php echo do_shortcode('[add_to_cart_url id="669"]'); ?>"><?php _e( 'Добавить страховку доставки (+$3)' ); ?> </a></td>
    </tr>
<?php else: ?>
    <tr class="shipping">
        <th><?php _e( 'Страховка доставки', 'woocommerce' ); ?></th>
        <td>$3</td>
    </tr>
<?php endif;
}

Измените переменную $product_id на ID вашего созданного товара, и при оформлении заказа этот скрытый товар будет просто добавляться в вашу корзину.

5 янв. 2014 г. 17:04:07
0

Это не даст полного ответа на ваш вопрос, но в официальной документации WooCommerce есть пример, похожий на то, что вы пытаетесь сделать. В частности, вам нужно сочетание Уроков 1 и 2.

Документация WooCommerce: Настройка полей оформления заказа с помощью действий и фильтров

Надеюсь, это поможет вам, пока кто-нибудь не предложит более конкретное решение.

6 нояб. 2013 г. 22:50:18