otp*_*abu 5 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>';
}
Run Code Online (Sandbox Code Playgroud)
对于允许延期交货的产品,它显示“允许延期交货”,但如果不允许延期交货,则不显示任何内容。为什么?
小智 11
每当我得到一个没有按照我认为应该做的 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>';
}
}
Run Code Online (Sandbox Code Playgroud)
- 我还要确保你用 {...} 括号括住了各种 if 位。我知道 PHP 应该允许更宽松的单行 ifs 要求,但这可能是原因!
当我对某个代码有问题时,我总是检查每个变量是否返回正确的值。
在这种情况下,我将每个部分分开以查看可能失败的内容,并且我更改了 Hook,以查看没有任何内容会导致某些冲突。
对不起,如果代码太长了。我在每个部分都进行了评论,以帮助理解每个部分的作用。我还添加了每个结果的图像。
案例 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>";
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我使用的主题是 Storefront 以避免任何插件/模板冲突