BBH
-Biz Branding Hub-
投稿日 : 
2019/08/19
更新日 : 
2019/08/19

WordPressの親カテゴリのみの一覧の実装例

ヘッダーの下などに良くついているカテゴリ一覧。
グローバルナビゲーションなどと呼ばれたりもします。
今回は、こうしたカテゴリー一覧の実装例を紹介していきます。

例として、このサイトの実装方法を紹介します。

このサイトのヘッダー下のカテゴリ一覧は、親カテゴリ(自身が親を持たないカテゴリ)だけを表示しています。
全てのカテゴリを出してしまうと、数が多くなりすぎて収まりきらなくなる可能性があるためです。

実装方法

実装としては以下のように行っております。

<?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の環境に合わせて適宜変更してください。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend