在Woocommerce中,我创建了一个自定义产品类型live_stream
。
但是当我在这个自定义类型中创建一个新产品并且我发布它时,该产品仍然是一个简单的产品"并且没有为其设置live_stream
自定义类型。
我做错了什么?如何使该定制产品类型起作用?
这是我的代码
function wpstream_register_live_stream_product_type() {
class Wpstream_Product_Live_Stream extends WC_Product {
public function __construct( $product ) {
$this->product_type = 'live_stream';
parent::__construct( $product );
}
public function get_type() {
return 'live_stream';
}
}
}
add_action( 'init', 'wpstream_register_live_stream_product_type' );
function wpstream_add_products( $types ){
$types[ 'live_stream' ] = __( 'Live Channel','wpestream' );
return $types;
}
add_filter( 'product_type_selector', 'wpstream_add_products' );
答案 0 :(得分:1)
由于Woocommerce 3 $this->product_type = 'live_stream';
已被弃用,因此在构造函数中不需要。必须通过在此自定义产品类型的类中的构造函数外定义函数get_type()
来替换它。
所以你的代码将是:
add_action( 'init', 'new_custom_product_type' );
function new_custom_product_type(){
class WC_Product_Live_Stream extends WC_Product{
public function __construct( $product ) {
parent::__construct( $product );
}
// Needed since Woocommerce version 3
public function get_type() {
return 'live_stream';
}
}
}
add_filter( 'product_type_selector', 'custom_product_type_to_type_selector' );
function custom_product_type_to_type_selector( $types ){
$types[ 'live_stream' ] = __( 'Live Channel', 'wpestream' );
return $types;
}
代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。
这可以解决您的问题。