Добавить контактную форму к продукту "Нет в наличии" - PullRequest
0 голосов
/ 22 ноября 2018

Я успешно добавил контактную форму к продукту, если он отсутствует на складе, используя

add_action('woocommerce_single_product_summary', 'add_contact_form', 30,2);

function add_contact_form() {
    global $product;
        if(!$product->is_in_stock( )) {
           echo do_shortcode('[contact-form-7 id="6513" title="Out of Stock Form"]');
        }
    }

Но я также хочу добавить ту же форму, если вариант продукта также отсутствует на складе.Просто не знаю, какой хук я могу использовать, чтобы связать его с сообщением «Нет в наличии» для этого варианта ... Я чувствую, что это может быть связано с линией 20 woocommerce / single-product / add-to-cart /Вариация. php

<div class="woocommerce-variation-availability">{{{ data.variation.availability_html }}}</div>

Но я немного теряю TBH.

Я могу изменить текст, который набирается как для простых продуктов, так и для продуктов с вариациями, используя

add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);

function wcs_custom_get_availability( $availability, $_product ) {

    if ( ! $_product->is_in_stock() ) {
        $availability['availability'] = __('<h4 style="color:#F00;">Coming Soon</h4>', 'woocommerce');
    }

    return $availability;
    }

Но если я попытаюсь добавить шорткод формы или другой HTML-код, например, iFrame, он удаляется и не отображается?!

1 Ответ

0 голосов
/ 23 ноября 2018

Следующий код добавит контактную форму к выбранному варианту товара, которого нет на складе:

add_filter( 'woocommerce_available_variation', 'form_to_out_of_stock_product_variations', 10, 3 );
function form_to_out_of_stock_product_variations( $data, $product, $variation ) {
    if( ! $data['is_in_stock'] )
        $data['availability_html'] .= do_shortcode('[contact-form-7 id="6513" title="Out of Stock Form"]');

    return $data;
}

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

enter image description here


Таким образом, вам необходимо настроить существующий код следующим образом:

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="6513" title="Out of Stock Form"]');
}

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

...