Как добавить купон на страницу продукта WooCommerce

Я использую WordPress (4.9.8) с WooCommerce (3.4.5) и хочу добавить поле купона на страницы отдельных продуктов. Я просматривал все шаблоны Woocommerce, но не могу найти способ добавить поле купона Woocommerce на страницу продукта.

Любые идеи?

Я не хочу использовать плагин для этого.


person bjornen    schedule 12.09.2018    source источник


Ответы (1)


Следующий код добавит настраиваемое поле ввода текста для купона на отдельных страницах продукта перед кнопкой «Добавить в корзину».

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

Если в это поле будет введен код купона, когда товар будет добавлен в корзину, код купона будет применен к корзине.

Код:

// Add a text input field inside the add to cart form
add_action('woocommerce_single_product_summary','add_custom_text_field_single_product', 2 );
function add_custom_text_field_single_product(){
    global $product;

    if( $product->is_type('variable') ){
        add_action('woocommerce_before_single_variation','custom_product_text_input_field', 30 );
    } else {
        add_action('woocommerce_before_add_to_cart_button','custom_product_text_input_field', 30 );
    }
}

function custom_product_text_input_field(){
    echo '<div class="hidden-field">
    <p class="form-row product-coupon form-row-wide" id="product-coupon_field" data-priority="">
        <label for="product-coupon" class="">' . __("Do you have a coupon code?") . '</label>
        <span class="woocommerce-input-wrapper">
            <input type="text" class="input-text " name="product-coupon" id="product-coupon" placeholder="'.__("Coupon code").'" value="">
        </span>
    </p></div>';
}

// Apply the coupon code from product custom text imput field
add_filter('woocommerce_add_cart_item_data', 'coupon_code_product_add_to_cart', 20, 3);
function coupon_code_product_add_to_cart($cart_item_data, $product_id, $variation_id) {
    if (isset($_POST['product-coupon']) && ! empty($_POST['product-coupon'])) {
        WC()->cart->apply_coupon( sanitize_title( $_POST['product-coupon'] ) );
    }
    return $cart_item_data;
}

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

Если вы хотите, чтобы поле купона на базе ajax, оно просто более сложное и слишком широкое для переполнения стека по этому вопросу без предоставления какого-либо кода.

person LoicTheAztec    schedule 12.09.2018
comment
Большое тебе спасибо. Это потрясающе. Еще раз спасибо. - person bjornen; 12.09.2018