WordPress — несколько условных php с логическим оператором ИЛИ не возвращает false

У меня есть условное выражение в php, когда я добавляю логический оператор OR, он не работает должным образом, в приведенном ниже примере он возвращает код, который я пытаюсь предотвратить.

Индивидуально каждое утверждение работает только тогда, когда они вместе, как я их ниже. Кажется неэффективным повторять код для каждого условия.

if (!is_sp_post_type('profile') || !is_category(array('previews','reviews')) || !is_single(array('previews','reviews'))) {
//do stuff
};

Я прочитал этот ответ Есть ли в PHP короткое замыкание ИЛИ, которое возвращает крайнее левое значение? но я все еще застрял

0

Решение

Просто используйте AND (&&) оператор.

OR оператору просто нужно одно true для выполнения условия, тогда как AND Оператору нужны все утверждения, чтобы быть правдой.

Я не уверен на сто процентов, чего вы пытаетесь достичь, но я бы посоветовал еще раз взглянуть на ваш NOT (!) оператор и как он используется в вашем коде

1

Другие решения

Я был глуп, должен был использовать &&

if (!is_sp_post_type('profile') && !in_category(array('previews','reviews')) && !is_single(array('previews','reviews'))) {
//do stuff
}

Благодаря Питер Гусен за указание на это — он удалил свой ответ, поэтому я не могу выбрать его.

1