Ich muss im Warenkorb nachsehen, ob einem Produkt ein bestimmtes Produktattribut hinzugefügt wurde. (Dies geschieht innerhalb einer benutzerdefinierten Versandfunktion, die in woocommerce_package_rates eingebunden ist.)
Ich habe die Varianten-ID für jeden Artikel in meinem Warenkorb, weiß aber nicht, wie ich den Varianten-Slug für diesen Artikel bekomme...
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"; }
你造成了一些混乱。在 WooCommerce 购物车项目上:
$cart_item['data']
;$cart_item['variation']
访问变体属性(这是产品属性分类法、产品属性 slug 值对的数组)。$variation->get_formatted_name()
是产品变体名称(已格式化),因此不是变体产品属性。woocommerce_package_rates
过滤器挂钩,使用$package['contents']
而不是WC()->cart->get_cart()
。您的问题不是很清楚,因为我们不知道您是否在属性分类法或属性段值中搜索术语“样本”。
尝试以下操作:
它应该适合你。