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

时间:2018-09-12 23:25:23

标签: php wordpress if-statement woocommerce orders

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

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

但是只有第一个有效。

我如何使它们同时适用?

2 个答案:

答案 0 :(得分:0)

第一个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;
    }
}

应该更好地工作。

答案 1 :(得分:0)

它没有超出第一个if的原因是它有一个else仅返回-因此,如果从逻辑上考虑它,您会看到$ status是否不是wc-processing然后返回(并退出函数)-换句话说,它永远不会超出第一个if

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

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

(如果您对break感到疑惑-尽管在这种情况下并不是严格必要的(因为该功能将随return退出),所以IMHO的最佳做法是始终请记住,每次编写switch结构时都要使用它。更多信息请参见下页。)

进一步阅读:http://php.net/manual/en/control-structures.switch.php