2010.07.23
WordPress 子ページを出力
先日 WordPress で子ページリストを出力出来ない問題にぶち当たりました。
テンプレートタグ wp_list_pages() の使用場所が親ページに限られていて、子ページ中では同階層のページを出力出来ない問題です。
何とか解決出来ないかと作った関数が以下のもの。
// 子ページを取得
function get_pages_children($parent_id){
global $wpdb;
$sql = "SELECT * FROM $wpdb->posts WHERE (post_type = 'page' AND post_status = 'publish') AND post_parent = $parent_id ORDER BY menu_order ASC";
return $wpdb->get_results($sql);
}
// 子ページをリストで出力
function list_pages($parent_id) {
$pages = get_pages_children($parent_id);
foreach($pages as $key => $value){
$id[$key] = $pages[$key]->ID;
}
$id = implode(',',$id);
echo wp_list_pages("depth=1&title_li=&sort_column=ID&include=$id");
}
もっとシンプルな形に纏められるかもしれません。
使用方法は list_pages() の引数に親ページIDを指定するだけ。