ヘッダーの下などに良くついているカテゴリ一覧。
グローバルナビゲーションなどと呼ばれたりもします。
今回は、こうしたカテゴリー一覧の実装例を紹介していきます。
例として、このサイトの実装方法を紹介します。
このサイトのヘッダー下のカテゴリ一覧は、親カテゴリ(自身が親を持たないカテゴリ)だけを表示しています。
全てのカテゴリを出してしまうと、数が多くなりすぎて収まりきらなくなる可能性があるためです。
実装方法
実装としては以下のように行っております。
<?php $categories = get_only_root_categories(); foreach($categories as $category) { echo '<li class="GlobalNavigation_Li">' . '<a href="' . get_category_link( $category->term_id ) . '</li> '; } ?>
・get_only_root_categories()という自作関数で親カテゴリのみを取得。
・取得したカテゴリ一覧をforeachで回してHTMLに整形。
特に難しいことはしていません。
get_only_root_categories()は以下のようになっています。
functions.phpなどに記載してください。
function get_only_root_categories() { $categories = array_filter(get_categories(), function($obj){ return ($obj->category_parent == 0 && $obj->term_id !== 1); //1 = Uncategorized }); return $categories; }
まず、get_categories()で全てのカテゴリ(子カテゴリも含む)を取得します。
取得したカテゴリーをarray_filterでフィルタリングします。
フィルタリング条件は後に続く、
($obj->category_parent == 0 && $obj->term_id !== 1)
になります。
これは、get_categories()で取得したカテゴリ一つずつに対して、条件判定を行っているものとなります。
条件判定の意味は、「親カテゴリの数が0で、カテゴリIDが1でないもの」となります。
親カテゴリの数が0と言うのが、親カテゴリを持たないという意味になります。
カテゴリIDが1でない、は未分類を除外するための条件です。
ここは、ご自身のWordPressの環境に合わせて適宜変更してください。