Отображение статусов заказов Woocommerce с использованием операторов IF - PullRequest
0 голосов
/ 13 сентября 2018

В 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 голосов
/ 13 сентября 2018

Причина, по которой он не выходит за пределы первого if, заключается в том, что у него есть else, который просто возвращается - поэтому, если вы продумаете это логически, вы увидите, что если $ status не является wc-processing, то return (ифункция выхода) - другими словами, она никогда не выходит за пределы первой 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

0 голосов
/ 13 сентября 2018

Первое утверждение 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;
    }
}

Должно работать лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...