web-dev-qa-db-ja.com

商品の分類、準分類、子分類

こんにちは私はwoocommerceの製品の主な分類法と副分類法を取得する必要があります。分類法の詳細を取得する方法を知っています。123 is product id .

$terms = get_the_terms(123, 'product_cat');

分類名の付け方も知っています

 echo $terms[0]->name 

しかし、私の必要性は次のとおりです。Nokia3110が私の携帯電話です。だからそれはelectronics-> mobiles -->ordinary-->Single sim-->nokia 3110の下にあります

id is 123 .

管理パネルの製品編集ページでnokia 3110がシングルシムの下にある[実際にはシングルシムは エレクトロニクス - >携帯電話 - >普通 ]の下にある普通など.

私の必要性はこのIDから私が主に分類学ノキア31110があるものを得る必要があります。答えはそれはエレクトロニクスにあります。そして私は2番目の分類法も必要です、それは私が携帯電話の下にあることを印刷する必要があるということです。これらの詳細を取得する方法

ありがとうございました 。

最上位の分類法を取得する方法を知っています

function get_term_top_most_parent($term_id, $taxonomy){
    // start from the current term
    $parent  = get_term_by( 'id', $term_id, $taxonomy);
    // climb up the hierarchy until we reach a term with parent = '0'
    while ($parent->parent != '0'){
        $term_id = $parent->parent;

        $parent  = get_term_by( 'id', $term_id, $taxonomy);
    }
    return $parent;
}

しかし、2番目のトップ分類法を見つけるのを手伝ってください。

2
tom

この答え に基づいて、これが配列の中のすべてのあなたの用語を得るための私の関数です:

function get_term_ancestors($post_id, $taxonomy){
    // Declare the array where we are going to store the terms
    $ancestors = array();
    // start from the current term
    $parent  = array_shift(get_the_terms($post_id,$taxonomy));
    // climb up the hierarchy until we reach a term with parent = '0'
    while ($parent->parent != '0'){
        $term_id = $parent->parent;

        $parent  = get_term_by( 'id', $term_id, $taxonomy);
        $ancestors[] = $parent;
    }
    return $ancestors;
}

以下のように使用してください。

$ancestors = get_term_ancestors(123,'product_cat');

したがって、この機能を使用すると、最上位の用語は次のようになります。

$ancestors[count($ancestors)-1] // or array_pop($ancestors);

そしてあなたの2番目のトップレベルの親は

$ancestors[count($ancestors)-2] // or another array_pop($ancestors)

アクセスする前にisset($ ancestors [count($ ancestors)-2])をチェックしてください。

警告:これは1期間内にある製品にのみ有効です。この関数は複数の用語を扱いません

2
Sladix