カテゴリーの中の子カテゴリーを取得して子カテゴリー一覧をウィジェットに表示する方法。
忘れそうなので備忘録として。
準備するプラグイン
並び替えするプラグイン Category Order and Taxonomy Terms Order
※任意に並び替えしたい場合のみ。もし名前や記事数で並び替え程度なら必要なし。
投稿→Taxonomy Order というメニューが出来るので、そこでドラッグ&ドロップで並び替えする。
function.phpに関数追加
テーマ(子テーマがあれば子テーマ)のfunction.phpに以下を追加する。
add_filter('widget_text', 'do_shortcode' ); //子カテゴリを表示する function SetPaperLabelcategory ($atts){ extract(shortcode_atts(array( 'postid' => '', 'title' => '', ), $atts)); //子カテゴリのタームを取得 $children = get_terms('category', array( 'orderby' => 'term_order', 'hide_empty' => 0, 'child_of' => $postid, ) ); $output = "<h3 class='widget_title sidebar_widget_title'>" . $title . "</h3><ul>"; foreach ( $children as $child ) { $term = get_term_by( 'id', $child->term_id, 'category' ); $output .= '<li><a href="' . get_term_link( $child, 'category' ) . '" title="' . $taxonomy_name . '" ' . '>' . $term->name . '(' .$term->count . ')' .'</a></li>'; } $output .= "</ul>"; return $output; } add_shortcode('PaperLabelcategory', 'SetPaperLabelcategory');
add_filterは、ウィジェットにショートコードを読み込めるようにするコード。ショートコードがウィジェットで動く場合は不要。
orderby の指定は、term_orderとしているのは、プラグインの指定。
ここに書いてあるとおりにしただけ。通常は、name や count などを指定する。
ウィジェットにショートコードを挿入
[PaperLabelcategory title=’タイトルで探す’ postid=’000′]
[PaperLabelcategory title=’価格で探す’ postid=’000′]
postidは、カテゴリー画面のURLで親カテゴリーのIDを調べる。
以上。
こうすると、子カテゴリーに追加したときでもカテゴリーにわざわざ追加することもない。
コメント