2014-11-05 2 views
8

Я довольно новичок в Wordpress/woocommerce и только начал играть с созданием настраиваемого плагина.Woocommerce - Как проверить тип продукта в плагине

До сих пор я добавил свои пользовательские настройки woocommerce через api.

У меня возникла проблема, когда я хочу добавить настраиваемое поле на одном продукте на вкладке данных продукта.

мне удалось отобразить его, используя следующий код:

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')); 

Однако теперь мне нужно проверить, если тип продукта просто или вариации. Я попробовал следующее:

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

Однако я получаю сообщение об ошибке:

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

У меня есть хорошее чувство, что я пытаюсь начать класс продукта до его называли. У меня, скорее всего, неправильный формат плагина класса. Любые материалы для чтения с хорошей инструкцией/лучшей практикой будут оценены.

В противном случае, если вышеуказанное является простым исправлением, пожалуйста, дайте мне знать.

ответ

11

Проблема, вероятно, что get_the_ID() не возвращает идентификатор продукта.

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

Если $product_id это идентификатор вариации, то тип возвращается для $_product будет variation.

Кроме того, вы можете проверить global $product, которые WooCommerce настраивает. Хотя это никогда не будет идентификатором вариации и будет идентификатором родительского переменного продукта.

+0

Для меня, по крайней мере, тип продукта изменения является «переменным», а не «изменением». Возможно, он изменился с момента первоначального ответа, но я думаю, что это стоит отметить в будущем. – Tuure

+1

@Tuure Переменные и вариации оба существуют. Тип продукта «переменная» означает, что родительский продукт содержит несколько дочерних продуктов «вариации». Изменения не отображаются в виде отдельных продуктов в списке продуктов, но на самом деле являются товарными позициями. – Berend

+0

Спасибо за разъяснение! – Tuure

Смежные вопросы