我创建了一个自定义产品类型变体,后端和前端一切正常,唯一的问题是,在购物车/结账详细信息中,变量产品名称未显示,购买商品后库存也没有减少,1 件available 变量,购买后,保留 1 件商品可用,而不是缺货。
这是使用的代码。
* 步骤 1. 将自定义产品类型“term”添加到其他硬编码产品类型中 */ add_filter( 'product_type_selector', 'misha_ticket_product_type' ); 函数 misha_ticket_product_type( $product_types ){ $product_types[ '门票' ] = '门票'; 返回$product_types; } /** * 步骤 2. 每个产品类型都有一个 PHP 类 WC_Product_{type} */ add_action( 'init', 'misha_create_ticket_product_class' ); add_filter( 'woocommerce_product_class', 'misha_load_ticket_product_class',10,2); 函数 misha_create_ticket_product_class(){ WC_Product_Ticket 类扩展 WC_Product_Variable { 公共函数 __construct( $product ) { $this->product_type = '门票'; $this->supports[] = 'ajax_add_to_cart'; 父级::__construct( $产品 ); } 公共函数 get_type() { 返回“票”; // 所以你可以使用 $product = wc_get_product(); $产品->get_type() } } } add_filter('woocommerce_product_data_tabs','ticket_showtabs',10,1); 函数ticket_showtabs($tabs) { array_push($tabs['attribute']['class'], 'show_if_variable', 'show_if_ticket'); array_push($tabs['variations']['class'], 'show_if_ticket'); 返回$tabs; } 函数producttype_custom_js() { if ( '产品' != get_post_type() ) : 返回; 结束; ?>我遇到了完全相同的问题,它的发生是因为
期望woocommerce_add_to_cart_handler
返回get_type
以触发'variable'
方法。add_to_cart_handler_variable
function misha_custom_add_to_cart_handler( $handler, $adding_to_cart ){ if( $handler == 'ticket' ){ $handler = 'variable'; } return $handler; } add_filter( 'woocommerce_add_to_cart_handler', 'misha_custom_add_to_cart_handler', 10, 2 );
根据此处的讨论,您需要类似上述内容如何添加将 WC_Product_Variable 扩展到购物车的自定义 WooCommerce 产品类型
我遇到了完全相同的问题,它的发生是因为
woocommerce_add_to_cart_handler
期望 get_type
返回 'variable'
以触发 add_to_cart_handler_variable
方法。
function misha_custom_add_to_cart_handler( $handler, $adding_to_cart ){
if( $handler == 'ticket' ){
$handler = 'variable';
}
return $handler;
}
add_filter( 'woocommerce_add_to_cart_handler', 'misha_custom_add_to_cart_handler', 10, 2 );
根据此处的讨论,您需要类似上述内容如何添加将 WC_Product_Variable 扩展到购物车的自定义 WooCommerce 产品类型