使用 IF 语句映射 WooCommerce 订单状态



在Woocommerce中,我正在尝试使用以下代码映射订单状态:

function my_map_status ($status) {
if ($status == "wc-processing") {
return "WAA";
} else {
return $status;
}
if ($status == "wc-cancelled") {
return "WAC";
} else {
return $status;
}
}

但只有第一个有效。

我怎样才能让它同时适用于两者?

第一个IFELSE语句是采取一切可能性。请改用IFELSEIFELSE结构:

function my_map_status ($status) {
if ($status == "wc-processing") {
return "WAA";
} elseif ($status == "wc-cancelled") {
return "WAC";
} else {
return $status;
}
}

它应该更好地工作。

它没有超出第一个if的原因是它有一个刚刚返回的else- 所以,如果你从逻辑上考虑一下,你会发现如果$status不是 wc 处理,那么返回(并退出函数( - 换句话说,它永远不会超过第一个if

相反,您可能想考虑使用switch/case,它比多个if/elseif更容易阅读,如下所示:

switch ( $status ) {
case "wc-processing":
return "WAA";
break;
case "wc-cancelled":
return "WAC";
break;
default:
return $status;
}

(如果您想知道break- 尽管在这种情况下不是绝对必要的(因为函数将与return一起退出(,恕我直言,每次编写switch结构时始终记住使用它是一种很好的做法。更多信息请访问下面的页面。

延伸阅读: http://php.net/manual/en/control-structures.switch.php

相关内容

  • 没有找到相关文章

最新更新