WordPress 指定カテゴリと記事に紐づくカテゴリの親カテゴリが同じ場合にカテゴリ情報を取得する方法

以下のような多階層のカテゴリ構成でブランド(brand)カテゴリと記事に紐づくカテゴリの親カテゴリが同じ場合にカテゴリ情報(cateAなど)を取得する方法を書いていきます。

商品
├ブランド(brand)
│└ブランドA(cateA)
│└ブランドB(cateB)
└特徴(type)

指定カテゴリのカテゴリ情報を取得する

以下のコードを “functions.php” などに追加します。

/**
 * 指定カテゴリのカテゴリ情報を取得する
 */
function get_brand_cat($post_id)
{
    $brand_cat    = get_category_by_slug("brand");
    $brand_cat_id = $brand_cat->cat_ID;
    $catObj       = get_the_category($post_id);
    $brand_catObj = '';
    
    foreach( $catObj as $cat ) {
        if ($brand_cat_id === $cat->parent) {
            $brand_catObj = $cat;
            break;
        }
    }
    
    return $brand_catObj;
}

もっとスマートなやり方がありそうな気がしますが、今日はこれしか思いつきませんでした…またアップデートします!

動作環境情報

エックスサーバー(x10)
PHP 7.3.14
MySQL 5.7
WordPress 5.4

コメント

タイトルとURLをコピーしました