WordPress | 親子構造を使わずにカテゴリをグループ別け表示する方法
WordPressのカテゴリを親子構造にせずにグループ別けして表示や処理をする方法とサンプルコードを紹介しています。
目次
親子構造を使わずにカテゴリをグループ別け表示する
親子構造にしてURL構造などで躓いた時や、サイドバーのカテゴリ表示の為に構造を変えるのもなーって時に一案として使えるかな、と思います。
カテゴリ・タグのカスタムフィールドを使った方法もありますが、今回は単純にサイドバーにぐるPHPの配列としてグループ別けして処理するやりかたになります。
動作としては、このブログのサイドバーで表示されているものと同じ感じになります。
この方法は以下の手順で実装します。
- ショートコードで実行できる関数を用意
- カテゴリーをグループ別けする
- データを出力して表示する
- カスタマイズする
ショートコードで実行できる関数を用意する
ショートコードで実行できる関数を用意しておきます。ウィジェットで使える様にしておくと、簡単にサイドバーなどに設置できます。
function categoryList()
{
// この中に処理を書いていきます
}
// ショートコードと実行する関数を定義
add_shortcode('category_list', 'categoryList');
// ウィジェットでショートコードを有効化
add_filter('widget_text', 'do_shortcode');
カテゴリーをグループ別けする
phpで配列を利用してカテゴリをグループ別けします。
サンプルコードでは単純にジャンル別にカテゴリ名でグループ化しています。
数が多い場合などは、カテゴリのデータにカスタムフィールドを与えてグループ別けしておくか、表示には使わない親カテゴリを使うとかの方法があります。
function categoryList()
{
$category_groups = [];
$category_groups['WEB'] = array('PHP', 'CSS', 'JavaScript');
$category_groups['ゲーム'] = array('Phaser', 'Unity', 'cocos2D');
$category_groups['ライフ'] = array('料理', 'お菓子');
};
// ショートコードと実行する関数を定義
add_shortcode('category_list', 'categoryList');
// ウィジェットでショートコードを有効化
add_filter('widget_text', 'do_shortcode');
データを出力して表示する
- カテゴリ名からカテゴリIDを取得
- カテゴリIDがあればカテゴリIDからデータを取得
- データからリストを作成
- リストをグループ単位でHTMLにする
- HTML出力
function categoryList()
{
$category_groups = [];
$category_groups['WEB'] = array('PHP', 'CSS', 'JavaScript');
$category_groups['ゲーム'] = array('Phaser', 'Unity', 'cocos2D');
$category_groups['ライフ'] = array('料理', 'お菓子');
foreach ($category_groups as $key => $group) {
$li = '';
foreach ($group as $value) {
// カテゴリ名からカテゴリIDを取得
$cat_id = get_cat_ID($value);
if (isset($cat_id)) {
$cat = get_category($cat_id);
$li = $li . '<li class="cat-item"><a href="https://1-notes.com/category/' . $cat->slug . '/">' . $value . '(' . $cat->count . ')</a></li>';
}
}
$ul = $ul . '<p class="categorie-group">' . $key . '</p><ul>' . $li . '</ul>';
}
echo '<div class="widget widget_categories">' . $ul . '</div>';
}
// ショートコードと実行する関数を定義
add_shortcode('category_list', 'categoryList');
//ウィジェットでショートコードを有効化
add_filter('widget_text', 'do_shortcode');
カスタマイズする
get_category()
関数の返り値に含まれるデータを使って色々カスタマイズが可能です。get_category()
関数の返り値には以下のデータが含まれています。
データ名 | 内容 |
---|---|
name | カテゴリ名 |
slug | カテゴリスラッグ名 |
cat_ID | カテゴリID |
count | 記事数 |
category_count | 子カテゴリ数 |
category_description | カテゴリ説明分 |
ディスカッション
コメント一覧
まだ、コメントがありません