我创建了一个定制的产品类型变量,在后端和前端一切都很好,唯一的问题是,在购物车/结帐详细信息中,变量产品名称没有显示,而且在购买商品后库存没有减少,1个商品可供变量使用,购买后,保持1个商品可用,而不是缺货。
这是使用的代码。
* Step 1. Add a custom product type "term" to other hardcoded ones */ add_filter( 'product_type_selector', 'misha_ticket_product_type' ); function misha_ticket_product_type( $product_types ){ $product_types[ 'ticket' ] = 'Ticket'; return $product_types; } /** * Step 2. Each product type has a PHP class WC_Product_{type} */ add_action( 'init', 'misha_create_ticket_product_class' ); add_filter( 'woocommerce_product_class', 'misha_load_ticket_product_class',10,2); function misha_create_ticket_product_class(){ class WC_Product_Ticket extends WC_Product_Variable { public function __construct( $product ) { $this->product_type = 'ticket'; $this->supports[] = 'ajax_add_to_cart'; parent::__construct( $product ); } public function get_type() { return 'ticket'; // so you can use $product = wc_get_product(); $product->get_type() } } } add_filter('woocommerce_product_data_tabs','ticket_showtabs',10,1); function ticket_showtabs($tabs) { array_push($tabs['attribute']['class'], 'show_if_variable', 'show_if_ticket'); array_push($tabs['variations']['class'], 'show_if_ticket'); return $tabs; } function producttype_custom_js() { if ( 'product' != get_post_type() ) : return; endif; ?><script type='text/javascript'> jQuery("body").bind("DOMNodeInserted", function() { jQuery(this).find('.enable_variation').addClass('show_if_ticket').show(); }); </script><?php } add_action( 'admin_footer', 'producttype_custom_js' ,99); function misha_load_ticket_product_class( $php_classname, $product_type ) { if ( $product_type == 'ticket' ) { $php_classname = 'WC_Product_Ticket'; } return $php_classname; } add_filter( 'woocommerce_data_stores', function( $stores ){ $stores['product-ticket'] = 'WC_Product_Variable_Data_Store_CPT'; return $stores; } ); add_action( 'woocommerce_ticket_add_to_cart', 'woocommerce_variable_add_to_cart' ); //**************************************END*********************************//```
我遇到了完全相同的问题,这是因为woocommerce\u add\u to\u cart\u handler
期望get\u type
返回'variable'
以触发add\u to\u cart\u handler\u 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 );
根据这里的讨论,您需要类似上面的内容,如何添加自定义的WooCommerce产品类型,将WC_product_变量扩展到购物车
在我的WooCommerce商店中,当一个可变产品被添加到购物车时,我让用户停留在产品页面上。 成功通知消息显示了产品标题以及通用附件,但我希望它在通知中显示产品标题的变化,如: “男式外套尺寸:小”已添加到您的购物车中。 而不是: “男式外套”已添加到您的购物车中。 目前正在运行WooCommerce 3.3.1和WP 4.9。 谢啦
我想用两个选定的变体替换购物车中的产品名称。理想情况下,采用这种格式: 变式1-变式2 对于下面的代码,它可以工作,但只显示第一个变体的名称。 有人找到这个漏洞了吗?或者知道它是如何工作的? 谢谢!
我已经在woocommerce单一产品页面上添加了一些自定义选项,使用了下面关于我的主题函数的代码。php: 现在我想在购物车页面上显示所选的选项值。请帮我做这件事。谢啦
我正在尝试为variations父产品创建一个单独的add to cart按钮。我正在使用以下方法访问产品数据: 谢谢你。
目前正在使用WordPress 5.1.1和WooCommerce 3.5.7。我的WooCommerce商店有大约500种产品,由简单和多变的产品组成。 每个产品自然都有一个SKU,但每个产品也有一个称为“商品代码”的唯一ID代码。我向特定行业销售特定产品。 我已经在我的functions.php文件中添加了简单和可变产品的自定义字段的代码,目前效果很好。 我的问题是,我试图让“商品代码”出现在
问题在于当我的客户尝试从购物车中编辑一个产品时。因为所有产品都有相同的ID(我只有一个产品),所以添加到购物车的最后一个产品的元加载到文本字段中。我当前使用产品id检索中的元,但该id与购物车中的所有其他产品相同。有没有其他方法可以在不使用/(如或使用会话)的情况下检索元?