Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果商品在商业中缺货,则用表单替换数量字段_Php_Wordpress_Woocommerce_Product_Contact Form 7 - Fatal编程技术网

Php 如果商品在商业中缺货,则用表单替换数量字段

Php 如果商品在商业中缺货,则用表单替换数量字段,php,wordpress,woocommerce,product,contact-form-7,Php,Wordpress,Woocommerce,Product,Contact Form 7,在woocommerce中,当一个产品缺货时,我试图用一个表单替换产品摘要中的产品数量字段 它适用于可变产品,但对于简单产品,它仍然显示形式和数量框 感觉上我忽略了一些非常基本的东西 我用“简单”和“变量”替换了不同的echo,以确定显示的是哪种形式,但在简单产品上,它仍然显示“变量”形式 这是我的密码: add_action( 'woocommerce_single_product_summary', 'add_form' ); function add_form() { global

在woocommerce中,当一个产品缺货时,我试图用一个表单替换产品摘要中的产品数量字段

它适用于可变产品,但对于简单产品,它仍然显示形式和数量框

感觉上我忽略了一些非常基本的东西

我用“简单”和“变量”替换了不同的
echo
,以确定显示的是哪种形式,但在简单产品上,它仍然显示“变量”形式

这是我的密码:

add_action( 'woocommerce_single_product_summary', 'add_form' );
function add_form() {
    global $product;

    if( $product->is_type( 'simple' ) ){
        // a simple product
        if(!$product->is_in_stock( )) {
            echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
            //echo "simple";
        }
    } elseif( $product->is_type( 'variable' ) ){
        // a variable product
        $count_in_stock == 0;
        $variation_ids = $product->get_children(); // Get product variation IDs

        foreach( $variation_ids as $variation_id ){
            $variation = wc_get_product($variation_id);
            if( $variation->is_in_stock() )
                $count_in_stock++;
        }   
    }

    if( $count_in_stock == 0 ) {
        echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
        //echo "variable";
    }   
}

尝试以下代码,当产品“缺货”(适用于所有产品类型,包括可变产品)时,该代码将替换数量字段,并使用表单添加到购物车按钮

你说“在简单产品上,它仍然显示‘变量’形式”:这是因为你在简单产品和变量产品上使用相同的短代码因此,您需要为简单产品添加正确的不同快捷码。

守则:

add_action( 'woocommerce_single_product_summary', 'action_single_product_summary_callback', 4 );
function action_single_product_summary_callback() {
    global $product;

    // Variable products
    if ( $product->is_type( 'variable' ) ){
        $count_in_stock = 0;

        foreach ( $product->get_visible_children() as $variation_id ) {
            $variation = wc_get_product($variation_id);

            if( $variation->is_in_stock() ) {
                $count_in_stock++;
            }
        }
        if ( $count_in_stock === 0 ) {
            // Remove quantity field and add to cart button
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
            // Display the contact form
            add_action( 'woocommerce_single_variation', 'display_variable_product_out_of_stock_form', 20 );
        }
    }
    // Other products (Simple … )
    else {
        if ( ! $product->is_in_stock() ) {
            // Remove quantity field and add to cart button
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            // Display the contact form
            add_action( 'woocommerce_single_product_summary', 'display_simple_product_out_of_stock_form', 30 );
        }
    }
}

// Form for variable products
function display_variable_product_out_of_stock_form() {
    echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
}

// Form for Simple products
function display_simple_product_out_of_stock_form() {
    echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]'); // <== NOT the correct shortcode
}
add_action('woocommerce_single_product_summary','action_single_product_summary_callback',4);
函数操作\u单个产品\u摘要\u回调(){
全球$产品;
//可变产品
如果($product->is_类型('variable')){
$count_库存=0;
foreach($product->get_visible_children()作为$VARIANCE_id){
$variation=wc\u get\u产品($variation\u id);
如果($variation->is_in_stock()){
$count_in_stock++;
}
}
如果($count_in_stock==0){
//删除数量字段并添加到购物车按钮
删除操作('woocommerce\u single\u variation'、'woocommerce\u single\u variation\u add\u to\u cart\u button',20);
//显示联系人表单
添加操作('woocommerce\u single\u variation'、'display\u variable\u product\u out\u of库存表单',20);
}
}
//其他产品(简单…)
否则{
如果(!$product->库存中(){
//删除数量字段并添加到购物车按钮
删除操作('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u add\u to\u cart',30);
//显示联系人表单
添加操作('woocommerce\u single\u product\u summary','display\u simple\u product\u out\u of stock\u form',30);
}
}
}
//可变产品表格
函数显示\变量\产品\出库\库存\表单(){
echo do_短代码('[contact-form-7 id=“304”title=“contact stock”]);
}
//简单产品表格
功能显示\u简单\u产品\u缺货\u库存\u表单(){

echo do_快捷码('[contact-form-7 id=“304”title=“contact stock”]”);//尝试以下代码,当产品“缺货”(适用于所有产品类型,包括可变产品)时,该代码将替换数量字段,并将表单添加到购物车按钮中

您说“在简单产品上,它仍然显示‘可变’形式”:这是因为您在简单产品和可变产品上使用相同的短代码。因此您需要为简单产品添加正确的不同短代码。

守则:

add_action( 'woocommerce_single_product_summary', 'action_single_product_summary_callback', 4 );
function action_single_product_summary_callback() {
    global $product;

    // Variable products
    if ( $product->is_type( 'variable' ) ){
        $count_in_stock = 0;

        foreach ( $product->get_visible_children() as $variation_id ) {
            $variation = wc_get_product($variation_id);

            if( $variation->is_in_stock() ) {
                $count_in_stock++;
            }
        }
        if ( $count_in_stock === 0 ) {
            // Remove quantity field and add to cart button
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
            // Display the contact form
            add_action( 'woocommerce_single_variation', 'display_variable_product_out_of_stock_form', 20 );
        }
    }
    // Other products (Simple … )
    else {
        if ( ! $product->is_in_stock() ) {
            // Remove quantity field and add to cart button
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            // Display the contact form
            add_action( 'woocommerce_single_product_summary', 'display_simple_product_out_of_stock_form', 30 );
        }
    }
}

// Form for variable products
function display_variable_product_out_of_stock_form() {
    echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]');
}

// Form for Simple products
function display_simple_product_out_of_stock_form() {
    echo do_shortcode('[contact-form-7 id="304" title="Contact stock"]'); // <== NOT the correct shortcode
}
add_action('woocommerce_single_product_summary','action_single_product_summary_callback',4);
函数操作\u单个产品\u摘要\u回调(){
全球$产品;
//可变产品
如果($product->is_类型('variable')){
$count_库存=0;
foreach($product->get_visible_children()作为$VARIANCE_id){
$variation=wc\u get\u产品($variation\u id);
如果($variation->is_in_stock()){
$count_in_stock++;
}
}
如果($count_in_stock==0){
//删除数量字段并添加到购物车按钮
删除操作('woocommerce\u single\u variation'、'woocommerce\u single\u variation\u add\u to\u cart\u button',20);
//显示联系人表单
添加操作('woocommerce\u single\u variation'、'display\u variable\u product\u out\u of库存表单',20);
}
}
//其他产品(简单…)
否则{
如果(!$product->库存中(){
//删除数量字段并添加到购物车按钮
删除操作('woocommerce\u single\u product\u summary'、'woocommerce\u template\u single\u add\u to\u cart',30);
//显示联系人表单
添加操作('woocommerce\u single\u product\u summary','display\u simple\u product\u out\u of stock\u form',30);
}
}
}
//可变产品表格
函数显示\变量\产品\出库\库存\表单(){
echo do_短代码('[contact-form-7 id=“304”title=“contact stock”]);
}
//简单产品表格
功能显示\u简单\u产品\u缺货\u库存\u表单(){

echo do_shortcode(“[contact-form-7 id=“304”title=“contact stock”]”);//非常感谢您的清晰回复。它工作得非常好,我从您的解释中学习到了。非常感谢您的清晰回复。它工作得非常好,我从您的解释中学习到了。