我正在尝试使用 wordpress 执行以下操作:
“如果不第92页,或页面的父级不 92。”
这就是我所拥有的:
<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>
如果我使用其中一种作为条件,它会起作用;当我添加第二个条件时,它会中断。
任何帮助都将受到赞赏。
干杯!
答案 0 :(得分:3)
您的问题可能在于使用||而不是&amp;&amp;。
如果您不在第92页 AND ,您希望它回显您不在第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
答案 1 :(得分:1)
您的陈述中还有一个额外的等号。运算符!==用于布尔检查。由于post_parent将自动解析为“true”,因为它有一个值,它将始终回显“foo”。将其更改为以下内容。
<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?>
答案 2 :(得分:0)
它只是!=不!==,只有一个相等