php условный оператор: не равен оператору

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

«Если нет страницы 92, OR page parent – НЕ 92».

Вот что я имею:

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

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

Любая помощь будет хорошо оценена.

Ура!

Related of "php условный оператор: не равен оператору"

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

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

Предположим, вы находитесь на стр. 92, тогда ваш текущий код делает это:

if (false || true)

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

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

if (true || false)

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

if (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

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

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

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