質問: get_posts( $args ); foreach( $myposts as $post ) : ?> 価格 :円(税別) ``` 色々と試してみたのですが、どうしてもうまくいかず一番最初に表示されているカテゴリの記事一覧が表示されます。 ただ、この一番最初に表示されるカテゴリには規則性が無く、 ID8のカテゴリは常に一番最初に表示され、ID3のカテゴリはその時々で表示の順番が違うなど、登録順とは全く関係の無い現象があります。 チェックを入れる規則があるのか調べてみたのですが、見つからず、チェックを入れる順番を変えても表示は変わりません。 アドバイス等いただけますと大変助かります。 他に必要なソースコード等ございましたらご教示いただけますと幸いです。 お手数をおかけいたしますが、どうぞよろしくお願いいたします。
回答: 質問者様の求めているものが「記事が属しているカテゴリの中で一番深いカテゴリのID」であると仮定すると、 以下のコードで求められるはずです。 ``` $cates = get_the_category(); $deepest = 0; foreach($cates as $cate) { // カテゴリの祖先オブジェクトのIDの配列を取得 $ancestors_ids = get_ancestors( $cate->cat_ID, 'category' ); // 祖先オブジェクトの個数を取得 $ancestor_num = count($ancestors_ids); // 祖先オブジェクトの個数が一番多いカテゴリのIDを取得 if( $ancestor_num > $deepest) { $deepest = $ancestor_num; $deepest_id = $cate->cat_ID; } } // デバッグ用出力 ?>深さ:一番深いカテゴリのID: