Как добавить новый тип продукта в типы продуктов WooCommerce?
Я хочу добавить новый пользовательский "тип продукта" в плагин WooCommerce:
Попробовал продублировать один из существующих файлов типа продукта (структура шаблонов WooCommerce) как новый файл (изменив имя файла и внутренний комментарий), но это не сработало!

Шаблон добавления в корзину — это лишь одна из многих вещей, которые вам нужно будет сделать. Каждый тип товара имеет свой собственный класс в папке /includes/
. Каждый из них наследуется от класса WC_Product
.
Чтобы добавить элементы в список, который вы заскриншотили (он находится в админке, а не на фронтенде, в отличие от шаблона add-to-cart.php
), вам нужно применить фильтр product_type_selector
.
add_filter( 'product_type_selector', 'wpa_120215_add_product_type' );
function wpa_120215_add_product_type( $types ){
$types[ 'your_type' ] = __( 'Ваш тип товара' );
return $types;
}
Затем вам нужно объявить свой класс товара. Стандартная система именования — WC_Product_Type_Class
, поэтому в этом примере это будет:
class WC_Product_Your_Type extends WC_Product{
/**
* __construct function.
*
* @access public
* @param mixed $product
*/
public function __construct( $product ) {
$this->product_type = 'your_type'; // Устарело, начиная с WC3.0, см. метод get_type()
parent::__construct( $product );
}
/**
* Get internal type.
* Необходимо для совместимости с WooCommerce 3.0
* @return string
*/
public function get_type() {
return 'your_type';
}
}
Вы задаете очень сложный вопрос, и я не могу дать более полного ответа. Надеюсь, это направит вас в правильном направлении. Я настоятельно рекомендую вам изучить код WooCommerce. Он очень хорошо задокументирован, и вы сможете увидеть, как обрабатываются различные типы товаров.
Обновление Добавлена совместимость с WC3.0 для класса типа товара.

Для людей из ✨ будущего ✨, которые нашли это, вот пост в блоге, который может предоставить полезную дополнительную информацию: http://jeroensormani.com/adding-a-custom-woocommerce-product-type/

Отлично! Но для людей из будущего, $this->product_type
не будет корректным для WC2.7+.

@helgatheviking Может, подскажете, где найти более актуальную информацию, особенно о product_type? Я постоянно натыкаюсь на "старые" туториалы, использующие только этот синтаксис.
