将联系表单添加到WooCommerce中“缺货”产品变型中

时间:2018-11-22 20:22:33

标签: php wordpress woocommerce product variations

如果已使用缺货,我已成功将联系表单添加到产品中

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"]');
        }
    }

但是,如果产品变体也缺货,我也想添加相同的表格。 只是不确定该使用哪种挂钩将其与“ Out of Stock”消息相关联... 我觉得这可能与woocommerce / single-product / add-to-cart / variation.php的第20行有关

<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 :(得分:1)

以下代码将联系表添加到选定的缺货产品变型中:

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