Je dois vérifier le panier pour voir si un attribut de produit spécifique a été ajouté sur un produit. (Il s'agit d'une fonction d'expédition personnalisée connectée à woocommerce_package_rates.)
J'ai l'ID de variante pour chaque article dans mon panier mais je ne sais pas comment obtenir le slug de variante pour cet article...
foreach (WC()->cart->get_cart() as $cart_item) { // $product_in_cart = $cart_item['product_id']; $variation_id = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : $cart_item['product_id']; $variation = wc_get_product($variation_id); $variation_name = $variation->get_formatted_name(); //I want to get the slug instead. // if there is the swatch variation of any product in the cart. if ( $variation_name == 'swatch') $cart_has_swatch = "true"; }
Vous avez provoqué un certain chaos. Sur le projet de panier WooCommerce :
$cart_item['data']
;$cart_item['variation']
sont accessibles via (qui est un tableau de taxonomie d'attributs de produit, de paires de valeurs de slug d'attribut de produit) .$variation->get_formatted_name()
est le nom de la variante du produit (formaté) et n'est donc pas un attribut de variante du produit.woocommerce_package_rates
过滤器挂钩,使用$package['contents']
而不是WC()->cart->get_cart()
.Votre question n'est pas très claire car nous ne savons pas si vous recherchez le terme « échantillon » dans la taxonomie des attributs ou dans la valeur du segment d'attribut.
Essayez ce qui suit :
Cela devrait fonctionner pour vous.