2012-11-17 2 views
1

Wordpress에서는 루프 외부에서 "in_category"를 사용할 수 없으므로 기사가있는 모든 카테고리를 제공하는 함수를 작성하고 "is_category"를 작성하십시오 if 그것의 진술.루프 밖에서 wordpress "in_category"해결 방법에 대한 평가 문자열

function inCatAlt($catID){ 
    $allCats = get_categories('child_of='.$catID); 

    $childCats = 'is_category('.$catID.') '; 
    foreach($allCats as $childCat){ 
     $childCats.= 'or is_category('.$childCat->cat_ID.') '; 
    }; 

    $allchildCats = trim(trim($childCats, 'or ')); 
    return $allchildCats; 
} 

을 단일 등등, 내 사이드 ​​바에서이 전화 :

내 "functions.php"내 기능을 넣어 문자열로 날이 다시주는

echo inCatAlt(13); 

:

"is_category(13) or is_category(16) or is_category(15)" 

이 내가 필요 정확히,하지만 지금은 이런 경우 함수에서 사용하는 문자열을 평가할 :

if(eval(inCatAlt(13))){ 
do something 
} 

그러나 작동하지 않습니다. 잘못 평가했거나 문제가 있습니까? 출력을 if 함수에 붙여 넣으면 잘 작동합니다 ...

+0

을하지만 사이드 바에서라면 여전히 루프 외부 될 것 :

이 시도? 이게 뭘하는지 모르겠군요 ... 또한, is_category는 루프 외부에서 사용될 수 있습니다. 두 번째 매개 변수로 페이지 ID를 지정하면됩니다. in_category (cat_id, post_id); 또한 in_category를 의미하는 is_category를 사용합니까? 루프 외부에서도 항상 is_category를 사용할 수 있습니다. –

+0

예, in_category는 작동하지 않지만 is_category는 작동합니다. 나는 어린 고양이 몇 마리를 가진 고양이 한 마리를 가지고있다. 난 그냥 내 기능을 자동으로 모든 내 고양이 고양이를주고 그것을 밖으로 "is_category"if 문을 만들 싶습니다. – fimbim

답변

0

나는 진짜 질문이라고 생각하는 것에 대답합니다. 제안 된 솔루션은 대단히 나쁜 습관입니다.

$post_categories = wp_get_post_categories($post_id); 
$child_categories = get_categories(array('child_of' => $catID)); 

if(count(array_intersect($post_categories, $child_categories)) > 0) 
    // The post exists in one or more of the child categories 
관련 문제