概要
固定ページなどでカテゴリー一覧を表示する場合、全てのカテゴリーであればwp_list_categories()
を使うだけで表示される。
しかし、特定のカテゴリーとその子カテゴリーだけを表示したい場合、WordPressで用意されている関数では実現できないようなので、ショートコードを使って実装してみた。
手順
- functions.phpにショートコードの定義を追加
function getCategoryList($args)
{
$ret = '';
$categories = get_categories('show_count=1&orderby=term_order&order=asc&pad_counts=1');
foreach ($categories as $category) {
if ((int)$args['category'] === $category->term_id) {
$ret .= '<li style="margin-top: 10px"><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a> ('.$category->category_count.')</li>';
break;
}
}
foreach ($categories as $category) {
if ((int)$args['category'] === $category->parent) {
$ret .= '<li style="margin-left:50px"><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a> ('.$category->category_count.')</li>';
}
}
return $ret;
}
add_shortcode('categoryList', 'getCategoryList');
- 定義したショートコードを使う
固定ページや投稿ページ、ウィジェットなど、一覧を表示したい場所にカスタムHTMLを追加し、ショートコードを埋め込む。
[categoryList category=30]
category=xx
の部分には親カテゴリーのカテゴリーIDを指定する。