web-dev-qa-db-fra.com

woocommerce obtenir des termes d'attribut

Dans Woocommerce, vous pouvez ajouter des attributs de produit globaux et des termes. Donc par exemple:

Size (attribute)
small  (term)
medium (term)
large  (term)

Ceci est indépendant du produit. Vous pouvez ensuite sélectionner parmi les attributs prédéfinis sur un produit.

Je dois obtenir tous les termes dans un attribut avec php. Sélectionnez donc l’attribut requis, par exemple taille, puis renvoyez un tableau contenant [small,medium,large].

Cela semble assez simple mais je ne trouve aucune aide pour le faire.

14
phantomdentist

Légèrement déroutant, en particulier lorsque vous parcourez les documents WooCommerce, car il n’est absolument pas fait mention d’une liste des termes/attributs.

Les attributs sont enregistrés en tant que taxonomie personnalisée et les termes sont des termes de taxonomie. Cela signifie que vous pouvez utiliser les fonctions natives de Wordpress: Wordpress get_terms () Référence des fonctions

En cliquant sur un attribut dans WooCommerce, vous pouvez regarder dans l'URL et vous pouvez voir qu'ils sont tous précédés de 'pa_'

C'est probablement ce dont vous avez besoin:

$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}
23
Mike Szostech

Je voulais pouvoir obtenir tous les différents attributs du backend définis et les placer dans un tableau avec lequel je pouvais travailler. J'ai pris du code dans le fichier class-wc-admin-attributs.php et je l'ai modifié mes besoins:

$attribute_taxonomies = wc_get_attribute_taxonomies();
$taxonomy_terms = array();

if ( $attribute_taxonomies ) :
    foreach ($attribute_taxonomies as $tax) :
    if (taxonomy_exists(wc_attribute_taxonomy_name($tax->attribute_name))) :
        $taxonomy_terms[$tax->attribute_name] = get_terms( wc_attribute_taxonomy_name($tax->attribute_name), 'orderby=name&hide_empty=0' );
    endif;
endforeach;
endif;

var_dump($taxonomy_terms);

exit;

Cela va parcourir toutes les taxonomies d'attributs, récupérer les termes pour chacune, vous laissant avec un tableau d'objets de termes à utiliser pour chaque taxonomie.

10
Nick

J'utilise ceci:

echo '<h1>variations</h1>';
mario( $product->get_available_variations());
echo '<h1>Atributos</h1>';
mario($product->get_attributes());
echo '<h1>Poste Terms</h1>';
mario(wp_get_post_terms( $post->ID, 'pa_color'));


function mario($texto){
    echo '<pre>';var_dump($texto);echo '</pre>';
};

Vraiment avec: "wp_get_post_terms ($ post-> ID, 'pa_color')", je ne cherche qu’un terme, mais l’idée est de boucler la clé ['nom'] qui renvoie cette fonction.

3
user2985804

Depuis la version 4.5.0, les taxonomies doivent être passées via l’argument ‘taxonomy’ dans le tableau $ args:

$terms = get_terms( array(
    'taxonomy' => 'pa_taxonyname',
    'hide_empty' => false,
) );

Par exemple, si le slug de taxonomie est 'date', la taxonomie sera donc 'pa_date' . Vous pouvez également passer la souris sur le nom de l'attribut et voir le nom de taxonomie au bas du navigateur.

 enter image description here

J'espère que ça aide!

1
michelmany