2011-04-20 2 views
0

내가 워드 프레스로 다음을 수행하려고 동일하지 여기 PHP 조건문 :</p>이 <p>"<strong>하지</strong> 92 페이지, <strong>또는</strong> 페이지의 부모 인 경우 <strong>하지</strong> (92)": 운영자

내가 무엇을 가지고 :

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

내가 하나 조건으로 기타를 사용하는 경우, 그것은 작동합니다 두 번째 조건을 추가하면 중단됩니다.

어떤 도움을 주시면 감사하겠습니다.

건배!

+0

당신은 모두의 값을 확인하신 후, 그들은 같은 값되지 않도록? –

+2

"나누기"를 정의 하시겠습니까? – Cyclone

+1

언어 모호성을 명확히하기 위해 "페이지가 92가 아니거나 부모가 92가 아닌 경우"이고 "if _neither_ page _nor_ parent가 92이면"이 아니라는 의미입니다. (후자의 경우'||'대신'&&'가 필요합니다.) – Wiseguy

답변

3

문제가 아마도 || & & 대신.

당신은 92 당신이 92

이의 당신이 92 페이지에있어 가정 해 봅시다 페이지의 하위 페이지에없는 당신이 페이지에없는 경우는 에코하려면, 다음 현재 코드는 다음을 수행합니다

92 때문에

if (false || true)

하나 개의 조건이 참이므로, 트리거, 따라서 92 페이지의 상위 아니다.

당신이 92 또는 92의 서브 페이지가 아닌 페이지에있는 경우 if (true || false)

, 당신이 얻을 : 당신이 (92)의 하위 페이지에있는 경우

은, 그것은 반대입니다 :

if (true || true)

그래서 항상 관계없이 어떤 페이지 온, 때문에, 트리거 || 전체 조건이 참일 때 단 하나의 참 진술 만 필요합니다.

페이지 92 :

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

서브 페이지 (92)의 :

따라서, 같은 아래로 논리적 인 실행을 제공

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

에 코드를 변경

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

일부 관련이없는 페이지 :

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

+0

아아, 예. 당신 말이 맞아요! 하나의 조건이 충족되면 상태가 트리거된다는 것을 잊었습니다. –

+0

오. 그게 내가 위의 의견에서 분명하게 생각한 것입니다. – Wiseguy

+0

감사합니다. 시간을 내 주셔서 감사합니다. 건배! –

0

그것의 유일한! =하지! ==, 하나의 동일한

+0

참조 : http://php.net/manual/en/language.operators.comparison.php '동일하지 않음' 여기가 문제라고 생각하지 않습니다. – Yoshi

+0

수 있습니다! == 너무. ! ==는 리터럴 유형 검사 중 하나입니다. – Phoenix

1

당신은 추가 등호 명세서에 서명해야합니다. 연산자! ==는 부울 검사를위한 것입니다. post_parent는 값을 가지고 있기 때문에 자동으로 "true"로 변환되기 때문에 항상 "foo"를 echo합니다. 다음과 같이 변경하십시오.

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

사실이 아닙니다. ! ==는 모든 데이터 유형에 사용됩니다. 물론'$ post-> post_parent'가 int가 아닌 문자열을 반환하면 문제가 될 수 있습니다. 그러면 작동하지 않습니다. – Phoenix

+0

동의 함 - 값이있는 변수가 "true"로 자동 해결된다는 사실을 잊어 버렸습니다. –

+0

흠, 그래, 나도 그걸 시도했다. 아직 안돼 - –