Wordpress では、ループ外で「in_category」を使用できないため、記事が含まれるすべてのカテゴリを取得する関数を作成し、そこから「is_category」if ステートメントを作成しました。
関数を「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;
}
これを私のサイドバー、single などで呼び出します。
echo inCatAlt(13);
これにより、これが文字列として返されます。
"is_category(13) or is_category(16) or is_category(15)"
これはまさに私が必要としていたものですが、今度は文字列を評価して、次のような if 関数で使用したいと考えています。
if(eval(inCatAlt(13))){
do something
}
しかし、うまくいきません。私はそれを間違って評価していますか、それとも問題は何ですか? 出力をコピーしてif関数に貼り付けると、正常に動作します...