前回の投稿「WordPressでカテゴリーを取得する方法」では、WordPressでよくあるカテゴリー情報の取得方法について解説しました。 今回は、少し複雑なカテゴリー情報の取得要件として、最上位(第一階層)のカテゴリーのみを全て取得する方法について解説します。
本稿で解説すること
WordPress の投稿のカテゴリーは、親子関係を持たせることができます。 しかしWEBページにメニューを表示する場合などに最上位のカテゴリーのみを表示したい場合があります。 そのような場合、WordPress標準の関数だけでは実現できず、本校で解説するような実装をする必要があります。
実装方法
それでは具体的な実装方法について解説していきます。 前回の投稿でカテゴリー情報オブジェクトがどのような情報を持っているのかを解説しました。 カテゴリー情報オブジェクトには parent
という変数があり、親カテゴリのID (整数)を保持しています。 しかし最上位のカテゴリーの場合は親カテゴリーが存在しないため値は「0」になります。 その特徴を利用して、以下のような処理で最上位カテゴリのみを取得することができます。
<?php
$categories = array();
foreach( get_categories() as $category ) {
if( $category->parent == 0 ) {
array_push($categories, $category);
}
}
?>
これで、変数 $categories
に最上位のカテゴリーのオブジェクトだけが配列で格納されます。 前回の投稿で述べたように関数 get_categories()
には検索条件の引数を渡すこともできます。 必要であれば、この get_categories()
を呼び出す際に絞り込みをすれば、特定の第一階層カテゴリのみを取得することも可能です。
この最上位カテゴリーを取得する処理が頻繁に必要であれば、 functions.php
内で関数化しておいても良いでしょう。
次回はn階層目カテゴリーのみを取得する方法を解説
本稿では最上位カテゴリーのみを取得する方法について解説しました。 次回は逆に子・孫カテゴリーで n 階層目のカテゴリーのみを取得する方法について解説します。