woocommerce 自定义产品类型 - 使变化成为可能

Posted

技术标签:

【中文标题】woocommerce 自定义产品类型 - 使变化成为可能【英文标题】:woocommerce custom product type - make variations possible 【发布时间】:2022-01-02 21:55:05 【问题描述】:

我知道,已经写了很多关于此的文章,但我无法让它发挥作用。 我有一个自定义产品类型“Elearning”并且我已经注册了它,并包含了一个用于添加到购物车模板的文件。此模板是 add-to-cart/variable.php 文件的副本。 使用 jquery,我使变化在管理端可见。到目前为止一切顺利,在背面,它正在工作。

但是,当一个人在前端访问产品时,它就不起作用了。 我得到错误

notice: undefined variable $attribute_keys
notice: undefined variable $available_variations;

因此,这会导致无法显示变体并购买产品。

但是,$attribute_keys 可以很容易地设置:

$attribute_keys  = $product->get_attributes();

但是,我正在努力解决 $available_variations。 函数 get_available_variations() 不适用于非可变产品。

知道如何解决这个问题吗?

【问题讨论】:

好吧,您的问题不包含a Minimal, Reproducible Example,但最重要的是,如果您创建自定义产品,您必须接管您想要使用的功能。通过查看 WooCommerce 如何将其应用于可变产品,您可以轻松了解如何做到这一点 嗨,是的,我同意它是最少的代码,但它可能会很长......它的标准注册自定义产品类型,将文件添加到具有正确名称的添加到购物车文件夹等等。没有什么真正值得注意的。但是我很难弄清楚如何让 $available_variations 为 Elearning 产品类型工作。我查看了核心文件,但代码依赖于其他函数,我认为问题出在某个地方,它检查了产品是否可变...... 我理解,我想说的是,将您现有的代码最小化为基本部分,并将该代码放入您的问题中。一个提示:我有时做的是查看现有插件的源代码(它实际上做了我正在寻找的东西)以及如何应用它,然后或多或少地复制该代码。并不总是需要重新发明***。 @7uc1f3r 你是对的,我敢打赌...简单地扩展 WC_Product_Variable 而不是 WC_Product 就足够了...然后什么都不需要,只需复制变量 product add到购物车模板文件并将其重命名为自定义产品类型。无论如何感谢您的意见! 【参考方案1】:

抱歉,显然我忽略了一个主要的简单解决方案。 最简单的方法是扩展 WC_Product_Variable 类而不是标准的 WC_Product 类。

所以我改变了:

function register_elearning_type () 

    class WC_Product_Elearning extends WC_Product 

        public function __construct( $product ) 
            $this->product_type = 'Elearning';
            parent::__construct( $product );
            
        


add_action( 'plugins_loaded', 'register_elearning_type' );

到这里:

function register_elearning_type () 

    class WC_Product_Elearning extends WC_Product_Variable 

        public function __construct( $product ) 
            $this->product_type = 'Elearning';
            parent::__construct( $product );
            
        


add_action( 'plugins_loaded', 'register_elearning_type' );

然后一切都像魅力一样发挥作用。

【讨论】:

以上是关于woocommerce 自定义产品类型 - 使变化成为可能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WooCommerce 中为自定义产品类型启用价格和库存

将自定义产品分类更改为 WooCommerce 产品分类

基于产品类型的 WooCommerce 的“添加到购物车”按钮旁边的自定义按钮

基于产品类型的 WooCommerce 的“添加到购物车”按钮旁边的自定义按钮

在最近的订单模板和管理订单上显示产品帖子类型高级自定义字段(woocommerce)

Woocommerce 在购物车和结账时使用自定义值覆盖产品价格