query_posts()を利用しつつ親カテゴリのアーカイブで子カテゴリの記事を出力する

カテゴリアーカイブ内の$catで取得できる値は親カテのIDだから、そのままquery_posts()に値を投げ込むと親カテと子カテの両方にチェック入れてない限り、親カテのアーカイブでは子カテの記事は表示されない。

よって、get_category_children()でその親カテに所属する子カテのIDを取得してquery_posts()に投げ込めば、子カテにしかチェック入れてない記事も親カテのアーカイブに表示させることができる。

補足。get_category_children()で取得できる値は文字列*1なのでsplit関数*2explode関数を使って配列形式にしてからquery_posts()に投げ込まないといけない。

//子カテゴリのIDを配列で取得
function get_child_id_Array($parrentID){
    $childcat = get_category_children($parrentID);
    if($childcat) {
        $childcat = explode('/',$childcat);
        array_shift($childcat);
        return $childcat;
    } else {
        return array($parrentID);
    }
}
  1. たしか「/」区切りだったはず。
  2. split関数はPHP 5.3で非推奨になった模様

文書情報

カテゴリ
WordPress関係
公開日時
2009年1月24日土曜日 10時31分17秒
最終更新日時
2010年1月24日日曜日 10時52分48秒
この記事のURI
http://www.rusica.net/heft/wp-memo-9
文書制作者
Rusica