2014-11-05 12 views
8

Jestem całkiem nowy dla wordpress/woocommerce i właśnie zacząłem grać z tworzeniem niestandardowej wtyczki.Woocommerce - Jak sprawdzić typ produktu w wtyczce

Do tej pory dodałem moje niestandardowe ustawienia woocommerce za pośrednictwem api.

Wystąpił problem polegający na tym, że chcę dodać niestandardowe pole do pojedynczego produktu na karcie danych produktu.

udało mi się go wyświetlić za pomocą następującego kodu:

add_action('woocommerce_product_options_general_product_data', array($this, 'cuzd_general_fields')); 
add_action('woocommerce_process_product_meta', array($this, 'cuzd_general_fields_save')); 

Jednak teraz muszę sprawdzić, czy typ produktu jest prosta lub zmienność. Próbowałem następujące:

$product = new WC_Product(get_the_ID()); 
     if($product->is_type('simple')) { 
      // 
} 

Jednakże pojawia się błąd:

Fatal error: Class 'WC_Product' not found in .... 

Mam dobre przeczucia próbuję zainicjować klasę usług przed ich nazywano. Najprawdopodobniej mam błędny cały format wtyczki klasy. Każdy materiał do czytania z dobrą instrukcją/najlepszą praktyką byłby mile widziany.

W przeciwnym razie powyższe rozwiązanie jest proste. Daj mi znać.

Odpowiedz

11

Problem jest prawdopodobnie taki, że get_the_ID() nie zwraca identyfikatora produktu.

$product_id = 10; // the ID of the product to check 
$_product = wc_get_product($product_id); 
if($_product->is_type('simple')) { 
// do stuff for simple products 
} else { 
// do stuff for everything else 
} 

Jeśli $product_id jest identyfikatorem odmianie następnie typ zwracany dla $_product byłoby variation.

Dodatkowo możesz sprawdzić global $product konfigurowany przez WooCommerce. Chociaż nigdy nie byłby to identyfikator zmiany i byłby identyfikator produktu nadrzędnego zmiennej.

+0

Dla mnie przynajmniej wariantem produktu jest "zmienna", a nie "zmienność". Mogło się zmienić od czasu pierwotnej odpowiedzi, ale myślę, że warto o tym pamiętać w przyszłości. – Tuure

+1

@Tuure Zmienna i zmiana istnieją. Typ produktu "zmienny" oznacza, że ​​jest to produkt nadrzędny, który przechowuje wiele produktów "zmienności". Odmiany nie pojawiają się jako oddzielne produkty na liście produktów, ale w rzeczywistości są postami produktów. – Berend

+0

Dzięki za wyjaśnienie! – Tuure

Powiązane problemy