【Luxeritas】親カテゴリと子カテゴリを入れ替える方法

当サイトでは、単独記事の属するカテゴリは、「親カテゴリ+子カテゴリのいずれか」という形式をとっています。

カテゴリスクリーンショット

ですが、以下の画像例ではカテゴリがアルファベット順で表示されており、親子関係の表示が少しおかしなことになっています。

追記前のカテゴリ

コンテンツに大きく関わる部分ではないので無視してもいいのですが、順番通りに表示させるように何となく考えてみました。

関数を追記

各記事は「親カテゴリ+子カテゴリのいずれか」に属しています。
つまり、絶対に2つのカテゴリを持つという事です。

以上を踏まえて、以下の関数をfunctions.phpに追記します。

function cmp_category_parent( $a , $b ){
	return ( $a->parent < $b->parent ? -1 : 1 );
}
function my_sort_category( $array ){
	usort( $array , 'cmp_category_parent' );
	return $array;
}

cmp_category_parent()でカテゴリ同士の比較を行っています。

親カテゴリのparent値は0です。
子カテゴリのparent値は親カテゴリのIDです。

my_sort_category()でcmp_category_parent()を用いた入替を行います。

meta.phpへ追記

146行目の$cat_array = get_the_category()の後に、my_sort_category()を追記します。

$cat_array = get_the_category( $wp_query->post->ID );
$cat_array = my_sort_category($cat_array);//追記

手順としては以上です。

実際の画像は以下の通り。

追記後のカテゴリ

影響範囲

現段階での確認範囲を挙げると、トップページ、アーカイブページ、検索結果ページ、固定ページ、個別記事ページの5ページ。

meta.phpの呼び出し元を遡る限りでもこれで間違いないとは思いますが、万が一ご指摘あればよろしくお願いいたします。