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

问题描述 投票:3回答:2

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

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

但只有第一个有效。

我怎样才能使它适用于两者?

php wordpress if-statement woocommerce orders
2个回答
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;
    }
}

它应该更好地工作。


0
投票

它没有超越第一个if的原因是它有一个只返回的else - 所以,如果你通过逻辑思考它会看到如果$ status不是wc处理然后返回(和退出函数) - 换句话说,它永远不会超越第一个if

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

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

© www.soinside.com 2019 - 2024. All rights reserved.