在Woocommerce中,我尝试使用以下代码映射订单状态:
function my_map_status ($status) {
if ($status == "wc-processing") {
return "WAA";
} else {
return $status;
}
if ($status == "wc-cancelled") {
return "WAC";
} else {
return $status;
}
}
但只有第一个有效。
我怎样才能使它适用于两者?
第一个IF
ELSE
声明正在采取一切可能性。而是使用IF
ELSEIF
ELSE
结构:
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
s更容易阅读,如下所示:
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