2012-11-17 122 views
1

在WordPress的您不容使用「in_category」外循環外WordPress的「in_category」的解決方法,所以我創建了一個功能,讓我所有的類我的文章中,如果創建一個「is_category」聲明出來了。評估和演示字符串循環

我把我的功能在我的「的functions.php」:

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; 
} 

,並呼籲這在我的側邊欄,單等:

echo inCatAlt(13); 

,給了我這個作爲一個字符串返回:

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

這正是我所需要的,但現在我想評估字符串使用它在if函數中是這樣的:

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

但它沒有工作。 我會評價它是錯的還是什麼問題? 如果我複製粘貼輸出入功能是否正常工作......

+0

但它仍然會是循環外,如果它在側邊欄?我沒有看到這個解決方案...此外,is_category可以在循環之外使用。你只需要給頁面ID作爲第二個參數:in_category(cat_id,post_id);你也使用is_category,我認爲你的意思是in_category? is_category始終可以使用,即使在循環之外。 –

+0

是啊,我知道in_category不起作用,但is_category確實。我有一隻有幾隻小貓的貓。我只是想讓我的函數自動給我所有的孩子貓,並且如果聲明中有一個「is_category」。 – 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