【WordPress】サブカテゴリを深い階層まで取得する関数

WordPressの話です。

query_posts(“cat=カテゴリID”)は、指定したカテゴリの記事を、そのサブカテゴリを最下層まで下って取得してくれます。

サブカテゴリはいりませんよ、というときはこの方法をどうぞ。

こちらで紹介されているget_subcat_idを使用してます。(直下のサブカテゴリのリストを返してくれます)

サブカテゴリを最下層までたどってそのリストを返す関数get_subcat_id_recursiveを使用して、

category__not_inを設定してはじく、という流れになります。

get_subcat_id_recursiveはget_subcat_idと一緒にfunction.phpにおいておくといいんじゃないでしょうか。


query_posts(array( 'cat' => カテゴリID, 'category__not_in' => get_subcat_id_recursive(カテゴリID) ));


function get_subcat_id_recursive($id) {
$cats = get_subcat_id($id);
$ret = $cats;
foreach($cats as $cat) :
$ret = array_merge($ret, get_subcat_id_recursive($cat));
endforeach;
return $ret;
}

しかし全体的に二度手間感が漂っているのが気になるところ…

もし、サブカテゴリを含まずにポストを取得するクエリがあるなら教えて下さいな。