В WooCommerce с помощью плагина Contact Form 7 я добавил форму в свой размещать простые товары на страницах отдельных товаров, используя следующий код:

add_action( 'woocommerce_single_product_summary', 'add_contact_form', 30, 2 );
function add_contact_form() {
    global $product;

    if( ! $product->is_in_stock( ) && ! $product->is_type('variable') ) {
       echo do_shortcode('[contact-form-7 id="14880" title="Fiyat Sorunuz"]');
    }
}

Эта форма "нет в наличии" подходит для простых товаров:

out of stock form works


Но не работает с вариантами товаров, которых нет в наличии для различных товаров:

only out of stock. How can I add a variant form?

Как я могу отобразить эту форму для выбранных вариантов продукта, которых нет в наличии?

Любая помощь приветствуется.

2
Selman Güneri 28 Фев 2021 в 04:17

2 ответа

Лучший ответ

Это требует небольшого изменения в вашем коде и некоторого кода jQuery, чтобы показать / скрыть контактную форму (и кнопку добавления в корзину) для различных продуктов, в зависимости от выбранного состояния запаса вариации продукта.

Код замены для простых и вариативных товаров:

add_action( 'woocommerce_single_product_summary', 'add_product_outofstock_contact_form', 30, 2 );
function add_product_outofstock_contact_form() {
    global $product;

    $contact_form = do_shortcode('[contact-form-7 id="14880" title="Fiyat Sorunuz"]');
    $contact_form = do_shortcode('[contact-form-7 id="382" title="form"]');

    if( $product->is_type('variable') ) {
        echo '<div class="outofstock-form" style="display:none">' . $contact_form . '</div>';
    } elseif( ! $product->is_in_stock() ) {
        echo $contact_form;
    }
}

add_action('woocommerce_after_variations_form', 'outofstock_product_variation_js');
function outofstock_product_variation_js() {
    ?>
    <script type="text/javascript">
    jQuery(function($) {
        var contactFormObject  = $('.outofstock-form'),
            addToCartButtonObj = $('.woocommerce-variation-add-to-cart');

        $('form.variations_form').on('show_variation', function(event, data) { // No selected variation
            if ( ! data.is_in_stock  ) {
                addToCartButtonObj.hide('fast');
                contactFormObject.show('fast');
            } else {
                addToCartButtonObj.show('fast');
                contactFormObject.hide('fast');
            }
        }).on('hide_variation', function() { // Not on selected variation
            addToCartButtonObj.show('fast');
            contactFormObject.hide('fast');
        });
    });
    </script>
    <?php
}

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

По теме: Передайте данные о выбранных вариантах продукта в форму запроса Contact Form 7

1
LoicTheAztec 28 Фев 2021 в 02:58

Передайте данные о выбранных вариантах продукта в контактную форму 7.

Я посмотрел. Я хочу, чтобы еще один был последним

Товар: [ваш-продукт] "Товар: Товар Отправьте вашу идею (ID 40): Цвет: черный - Размер: 12 -"

Я хочу, чтобы это был код "атрибутов цвета"

Wp-admin / edit-tags.php? taxonomy = pa_renk & post_type = product "pa_renk"

0
Selman Güneri 28 Фев 2021 в 04:17