我正在尝试使用wordpress:
"如果是不是 92页或页面父母是不是 92。"
我有:
<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>
如果我使用一个或另一个作为条件,它工作;当我加入第二个条件时,它就失效了。
任何帮助都将是非常感激的。
干杯!
您的问题可能是使用了||而不是&&
如果你不在第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
您的语句中有一个额外的等号。操作符!==用于布尔检查。因为post_parent会自动解析为"true",因为它有一个值,所以它总是回显"foo"。修改为:
<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?>
只有!=不!==,只有一个相等的