PHP условный оператор: не равно оператору - PullRequest
0 голосов
/ 20 апреля 2011

Я пытаюсь сделать следующее с wordpress :

"Если это НЕ , страница 92, ИЛИ , родительским элементом страницы является НЕ 92."

Вот что у меня есть:

<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>

Если я использую одно или другое в качестве условия, оно работает; Когда я добавляю второе условие, оно нарушается.

Любая помощь будет принята с благодарностью.

Ура!

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Ваша проблема, вероятно, в использовании ||вместо &&.

Вы хотите, чтобы оно отображалось, если вы не на странице 92 И вы не находитесь на подстранице страницы 92.

Допустим, вына странице 92 ваш текущий код делает это:

if (false || true)

, поскольку 92 не является родителем страницы 92. Таким образом, поскольку одно условие истинно, оно срабатывает.

Если вы находитесь на подстранице 92, то все наоборот:

if (true || false)

Если вы находитесь на странице, которая не 92 или подстраница 92, тогда вы получите:

if (true || true)

Таким образом, он будет срабатывать всегда, независимо от того, на какой странице вы находитесь, потому что ||требуется только одно утверждение true для всего условия, чтобы оно было истинным.

Следовательно, измените код на

<?php if (!is_page(92) && $post->post_parent !== 92) { echo $foo; } ?>

, что дает логическое завершение, например:

Страница 92:

if(false && true) //false, won't trigger

Подстраница 92:

if(true && false) //false, won't trigger

Некоторые несвязанные страницы:

if(true && true) //true, will trigger

1 голос
/ 20 апреля 2011

В вашем утверждении есть дополнительный знак равенства. Оператор! == предназначен для логических проверок. Так как post_parent автоматически преобразуется в «true», так как он имеет значение, он всегда будет отображать «foo». Измените его на следующее.

<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?>
0 голосов
/ 20 апреля 2011

Это только! = Нет! ==, только один равен

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