2011-04-20 58 views
0

我试图做到以下几点与WordPress的PHP条件语句:不等于操作

“如果是第92页,页父 92”

以下是我有:

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

如果我使用一个或另一个作为条件,它的工作原理;当我添加第二个条件时,它会中断。

任何帮助将不胜感激。

干杯!

+0

你检查这两个值,以确保它们是不一样的价值? – 2011-04-20 14:43:58

+2

定义“休息”? – Cyclone 2011-04-20 14:47:22

+1

只是澄清语言歧义,你的意思是“如果_either_页面不是92或者如果父母不是92”,而不是“如果_neither_ page _nor_ parent是92”,对吗? (对于后者,你需要'&&'而不是'||'。) – Wiseguy 2011-04-20 14:55:19

回答

3

你的问题可能是在使用||而不是& &。

你希望它呼应如果你不是页面上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:

的子页面的92

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

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

一些无关的网页:

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

+0

ahhhhh,是的。你是对的!我忘了,如果满足一个条件,则触发条件。 – 2011-04-20 15:02:27

+0

哦。这就是我认为我在上面的评论中澄清的内容。 – Wiseguy 2011-04-20 15:04:38

+0

谢谢你,我感谢你的时间。干杯! – 2011-04-20 15:05:02

0

这只是!=不!==,只有一个等于

+0

请参阅:http://php.net/manual/en/language.operators.comparison.php'不一致' 我不认为这是这里的问题。 – Yoshi 2011-04-20 14:45:50

+0

也可以!==。 !==是检查一个的文字类型。 – Phoenix 2011-04-20 14:46:16

1

您的声明中有一个额外的等号。运算符!==用于布尔检查。由于post_parent会自动解析为“真”,因为它有一个值,它总是会回显“foo”。将其更改为以下内容。

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

不正确。 !==适用于所有数据类型。当然,这可能是他的问题,如果$ post-> post_parent返回一个字符串而不是一个int,那么它就不起作用。 – Phoenix 2011-04-20 14:48:01

+0

同意 - 我忘了带有值的变量会自动解析为“true”。 – 2011-04-20 14:49:32

+0

嗯,是的,我也试过。还是不行 - – 2011-04-20 14:50:13