この記事の所要時間: 232

WordPressにて同一の「子カテゴリ」の記事一覧の表示で・・・
一苦労・・・

WordPressのメソッドで表示記事のカテゴリを取得する

get_the_category()

というのがあります。

これが、「カテゴリ名」順で取得してくれるので困ってしまいました。

カテゴリは下記の構造でして・・・

親カテゴリ1 「遊園地」
 └ 子カテゴリ1 「ワンダーらんど!」
 └ 子カテゴリ2 「DESTINY LAND」
 └ 子カテゴリ3 「西部園」
親カテゴリ2
親カテゴリ3

こんな感じ。

で、例えば記事の子カテゴリが「DESTINY LAND」だったとすると

子カテゴリーの一覧を出そうとして
勝手な想像で get_the_category() で取得するカテゴリーリストの末端が子カテゴリ・・・という想定だったのが・・・
※今回 記事一つにつき 親カテゴリー – 子カテゴリー の想定を外さない仕様です。

親カテゴリがとれて上の例だと「遊園地」全部取れちゃったという感じになりました。

あれ・・・get_the_category() ってなに順?

そして、「タイトル名」順をカテゴリーID順にするのってどうするんだ・・・という疑問に駆られ調査・・・

こちらの記事がとても参考になりました。
助かりましたーーーーー

get_the_categoryをカテゴリーid順に取得するようにする | Simple Colors

get_the_categoryをカテゴリーid順に取得するようにする | Simple Colors.

で、最終のカテゴリ(この場合は子カテゴリ)を取得しそのカテゴリの記事一覧を表示したコードは下記のようなものです。

[php]
(前略)



< ?php
wp_reset_query();
global $post;

$cat = get_the_category();
// カテゴリーID順にソート ↓↓↓
usort( $cat, ‘_usort_terms_by_ID’);

$slug = $cat[(count($cat) – 1)]->slug;
$post_id = get_the_ID();
//$posts = query_posts(‘orderby=date&posts_per_page=5&category_name=’.$slug);
$posts = query_posts(
array(
‘orderby’=>’date’,
// ‘post__not_in’=>array($post_id),
‘posts_per_page’=>5,
‘category_name’=>$slug
)
);
if ($posts) {
?>