WooCommerce:检查产品是否缺货并且不允许缺货

时间:2018-07-13 14:46:30

标签: php wordpress woocommerce

如何检查产品是否缺货(库存数量0)并且不允许缺货?以下代码由于某些原因无法正常工作。

add_action('woocommerce_before_add_to_cart_button','show_stock_single');
function show_stock_single() {
  global $product;
  if($product->get_stock_quantity()<1) {
    if($product->backorders_allowed()) echo '<p>Backorders allowed</p>';
    else echo '<p>Backorders not allowed</p>';
  }
  else echo '<p>Available</p>';
}

对于允许延期交货的产品,它显示“允许延期交货”,但是如果不允许延期交货,则不显示任何内容。为什么?

2 个答案:

答案 0 :(得分:2)

每当我得到一个if语句时,我做的都不尽如人意,我首先要做的就是将其逆转,因此,请尝试一下...

if($product->get_stock_quantity()>0) {
    echo '<p>Available</p>';
} else {
    if($product->backorders_allowed()) { 
        echo '<p>Backorders allowed</p>';
    } else {
        echo '<p>Backorders not allowed</p>';
    }
}

-我还要确保您将各种if位括在{...}括号内。我知道PHP应该允许单行ifs放宽要求,但这可能是原因!

答案 1 :(得分:0)

当我对某些代码有疑问时,我总是检查每个变量是否返回正确的值。

在这种情况下,我将每个部分分开以查看可能发生的故障,并且还更改了挂钩,以确保没有任何东西可能引起某些冲突。

对不起,如果代码太长。我在每个部分中进行了评论,以帮助理解每个部分的功能。我还添加了每个结果的图像。

案例1 https://i.stack.imgur.com/rmu5m.jpg

案例2 https://i.stack.imgur.com/Zxnrt.jpg

案例3 https://i.stack.imgur.com/v8Tzc.jpg

add_action('woocommerce_single_product_summary','show_stock_single',5);
function show_stock_single() {
  global $product;
  $StockQ=$product->get_stock_quantity();

  if ($StockQ>=1)//Stock is Available
  {
    echo "<p>Available</p>";
  }
  elseif($StockQ<1)//Product is Out of Stock
  {
    echo "<p>Out of Stock</p>";
    if ($product->backorders_allowed())//Product is out of stock AND allow backorders
    {
        echo "<p>Backorder Allowed</p>";
    }
    else//Product is out of stock AND DO NOT allow backorders
    {
        echo "<p>Backorder NOT Allowed</p>";
    }
  }
}

注意:我使用的主题是店面,以避免任何插件/模板冲突