简体   繁体   English

在Woocommerce 3中检查产品库存可用性

[英]Checking product stock availability in Woocommerce 3

I have following code that adds a simple notice about stock availability and shipping into product on shop/archive page, but in case when product stock quantity is 0 (is out of stock) notice is not showing up. 我有以下代码,在商店/存档页面上添加了有关库存可用性和运送到产品的简单通知,但是如果产品库存数量为0(缺货),则不会显示通知。

add_action( 'woocommerce_after_shop_loop_item','show_stock_shop', 90 );

function show_stock_shop() {
    global $product;

    $regular = $product->regular_price;
    $sale = $product->sale_price;
//  $stock = the_field('stock-available');

    if ( $product->stock ) { // if manage stock is enabled 
        if ( $product->get_stock_quantity() > 0 && $regular >= 500 || $sale >= 500  ) { // in stock, free shipping
            echo '<div class="remaining text-center pt-2 pb-2">Skladom. <span class="doprava-zadarmo">Doprava zadarmo</span></div>';
        } elseif ( $product->get_stock_quantity() == 0 && $regular >= 500 || $sale >= 500 ) { // out of stock, free shipping
            echo '<div class="remaining text-center pt-2 pb-2"><s>(nie je skladom)</s>. <span class="doprava-zadarmo">Doprava zadarmo</span></div>';
        } elseif ( $product->get_stock_quantity() > 0 && $regular < 500 || $sale < 500 ) { // in stock, not free shipping
            echo '<div class="remaining text-center pt-2 pb-2">Skladom. <span class="doprava-zadarmo">Doprava zadarmo od 500 eur</span></div>';
        } elseif ( $product->get_stock_quantity() == 0 && $regular < 500 || $sale < 500 ) { // out of stock, not free shipping
            echo '<div class="remaining text-center pt-2 pb-2"><s>(nie je skladom)</s>. <span class="doprava-zadarmo">Doprava zadarmo od 500 eur</span></div>';
        } else {
            echo '<div class="remaining text-center pt-2 pb-2">Do ' . /*$stock .*/ ' dní</div>'; 
        }
    }
}

在此处输入图片说明

Your code is outdated. 您的代码已过时。 Since Woocommerce 3, product properties can't be accessed directly and you should use available WC_Product methods , like is_in_stock() conditional method to check the product stock availability . 从Woocommerce 3开始,无法直接访问产品属性,您应该使用可用的WC_Product方法 ,例如is_in_stock()条件方法检查产品库存可用性

Try the following simplified code version: 请尝试以下简化的代码版本:

add_action( 'woocommerce_after_shop_loop_item', 'display_loop_item_stock_notice', 90 );
function display_loop_item_stock_notice() {
    global $product;

    // For active product price: Free shipping || NO Free shipping
    $text = $product->get_price() >= 500 ? __("Doprava zadarmo") : __("Doprava zadarmo od 500 eur");

    // In stock
    if ( $product->is_in_stock() ) { 
        $text = __("Skladom.") . ' <span class="doprava-zadarmo">' . $text . '</span>';
    } 
    // Out of stock
    else {
        $text = '<s>(' . __("nie je skladom") . ')</s> <span class="doprava-zadarmo">' . $text . '</span>';
    }
    echo '<div class="remaining text-center pt-2 pb-2">' . $text . '</div>';
}

Code goes in function.php file of your active child theme (or active theme). 代码进入您的活动子主题(或活动主题)的function.php文件中。 Tested and works. 经过测试和工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM