在 WooCommerce 中向 "Out of Stock" 产品变体添加联系表

Add a Contact Form to "Out of Stock" product Variations in WooCommerce

如果产品缺货,我已使用

成功添加联系表
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"]');
        }
    }

但如果产品变体也缺货,我也想添加相同的表格。 只是不确定我可以使用哪个钩子将它与该变体的缺货消息联系起来...... 我觉得这可能与 woocommerce/single-product/add-to-cart/variation.php

的第 20 行有关
<div class="woocommerce-variation-availability">{{{ data.variation.availability_html }}}</div>

但是我有点迷茫了。

我可以使用

更改为简单产品和具有变体的产品显示的文本
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,它会被删除并且不会呈现?!

以下代码将向选定的缺货产品变体添加联系表:

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 文件。已测试并有效。


因此您需要按如下方式调整现有代码:

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 文件。已测试并有效