【问题标题】:Display a form when the selected variation is out of stock in WooCommerce当所选变体在 WooCommerce 中缺货时显示表单
【发布时间】:2021-02-28 01:17:42
【问题描述】:

在带有Contact Form 7 plugin 的 WooCommerce 中,我使用以下代码在单个产品页面上为我的缺货简单产品添加了一个表单:

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

这种“缺货”形式非常适合简单的产品:


但不适用于可变产品的“缺货”产品变体

我如何为选定的缺货产品变体显示此表单?

感谢任何帮助。

【问题讨论】:

    标签: php jquery woocommerce contact-form-7 product-variations


    【解决方案1】:

    这需要对您的代码和一些 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"]');
    
        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 文件中。经过测试并且可以工作。

    相关:Pass the chosen product variations data into Contact Form 7 enquiry form

    【讨论】:

    • 天哪!非常感谢。
    • 谢谢,你知道在哪里可以找到 wooCommerce @LoicTheAztec 的所有本地名称(例如 show_variation)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2015-03-14
    • 2021-07-24
    • 1970-01-01
    相关资源
    最近更新 更多