我试图做到以下几点与WordPress的:PHP条件语句:不等于操作
“如果是不第92页,或页父不 92”
以下是我有:
<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>
如果我使用一个或另一个作为条件,它的工作原理;当我添加第二个条件时,它会中断。
任何帮助将不胜感激。
干杯!
我试图做到以下几点与WordPress的:PHP条件语句:不等于操作
“如果是不第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)
因此,它总是会触发,无论哪一页您的,因为||只需要一个真实的陈述来说明整个条件是正确的。
因此,更改您的代码
<?php if (!is_page(92) && $post->post_parent !== 92) { echo $foo; } ?>
这倒给出了一个合乎逻辑的运行,如:
页92:
的子页面的92if(false && true) //false, won't trigger
:
if(true && false) //false, won't trigger
一些无关的网页:
if(true && true) //true, will trigger
ahhhhh,是的。你是对的!我忘了,如果满足一个条件,则触发条件。 – 2011-04-20 15:02:27
哦。这就是我认为我在上面的评论中澄清的内容。 – Wiseguy 2011-04-20 15:04:38
谢谢你,我感谢你的时间。干杯! – 2011-04-20 15:05:02
您的声明中有一个额外的等号。运算符!==用于布尔检查。由于post_parent会自动解析为“真”,因为它有一个值,它总是会回显“foo”。将其更改为以下内容。
<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?>
不正确。 !==适用于所有数据类型。当然,这可能是他的问题,如果$ post-> post_parent返回一个字符串而不是一个int,那么它就不起作用。 – Phoenix 2011-04-20 14:48:01
同意 - 我忘了带有值的变量会自动解析为“true”。 – 2011-04-20 14:49:32
嗯,是的,我也试过。还是不行 - – 2011-04-20 14:50:13
你检查这两个值,以确保它们是不一样的价值? – 2011-04-20 14:43:58
定义“休息”? – Cyclone 2011-04-20 14:47:22
只是澄清语言歧义,你的意思是“如果_either_页面不是92或者如果父母不是92”,而不是“如果_neither_ page _nor_ parent是92”,对吗? (对于后者,你需要'&&'而不是'||'。) – Wiseguy 2011-04-20 14:55:19