如何检查产品是否缺货(库存数量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>';
}
对于允许延期交货的产品,它显示“允许延期交货”,但是如果不允许延期交货,则不显示任何内容。为什么?
答案 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>";
}
}
}
注意:我使用的主题是店面,以避免任何插件/模板冲突