web-dev-qa-db-fra.com

Taxonomie, sous-taxonomie, taxonomie enfantine d'un produit commerce

Bonjour, j’ai besoin d’obtenir la taxonomie principale et la taxonomie secondaire d’un produit dans woocommerce. Je sais comment obtenir des détails sur la taxonomie .123 is product id .

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

Je sais aussi comment obtenir le nom de taxonomie

 echo $terms[0]->name 

Mais mon besoin est le suivant: le Nokia 3110 est mon portable. Donc, c'est sous electronics-> mobiles -->ordinary-->Single sim-->nokia 3110

id is 123 .

dans la page de modification du produit sur le panneau d’administration, Nokia 3110 est sous simple sim [mais en fait, seul est sous électronique-> mobiles -> ordinaire ]. ordinaire, etc.

Mon besoin est de cet identifiant, je dois obtenir principalement dans lequel taxonmy Nokia 31110 est. La réponse est que c'est en électronique. Et j’ai besoin de la deuxième taxonomie également, c’est-à-dire que j’ai besoin de l’imprimer sous des téléphones portables. Comment obtenir ces détails

Je vous remercie .

je sais comment obtenir la meilleure taxonomie

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;
}

mais aidez s'il vous plaît à trouver la deuxième top taxonomie.

2
tom

Basé sur cette réponse , voici ma fonction pour obtenir tous vos termes dans un tableau:

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;
}

Utilisez comme suit:

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

Donc, avec cette fonction, votre terme de premier niveau sera:

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

et votre deuxième parent de premier niveau sera

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

Veuillez également noter que vous devriez vérifier isset ($ ancestors [count ($ ancestors) -2]) avant d'essayer d'y accéder.

Attention: Ceci ne fonctionnera que pour les produits qui sont dans un terme. Cette fonction ne gère pas plusieurs termes

2
Sladix