我正在编写一个插件,以自定义Easy Digital Downloads在销售产品过程中的行为方式。我想让客户购买捆绑销售的产品作为实物(使用EDD-Simple-Shipping)而不是捆绑销售。
因此,我正在使用EDD-Simple-Shipping来销售实物产品,但问题是那些实物(书)具有捆绑价格(书章的.pdf版本),用户应该支付捆绑费用才能下载他们。
问题是,当用户购买了捆绑的产品(书)后,在支付了所有捆绑的下载内容/产品(书的数字章节)后,就会将其添加到收据中。
因此,我想在插件中使用挂钩和/或其他方法,以便当用户购买启用了运输功能的下载/产品时,EDD不会将捆绑的商品添加到收据和用户购买历史记录中。
注意:由于已经添加了很多项目,因此我暂时无法迁移到Woo-Commerce之类的其他电子商务解决方案。
到目前为止,我在EDD源代码中发现了这些功能,可能会对解决方案有所帮助:
在include / download-functions.php中
edd_get_download_type($download_id) // Gets the Download type, either default or "bundled"
edd_is_bundled_product( $download_id = 0 ) // Determines if a product is a bundle
edd_get_bundled_products() // Retrieves the product IDs of bundled products
在includes / payments / actions.php中
edd_complete_purchase() //Performs all necessary actions to complete a purchase. Triggered by the edd_update_payment_status() function.
这也是action.php的钩子
do_action( 'edd_complete_download_purchase', $download['id'], $payment_id, $download_type, $download, $cart_index );
但这是一个动作挂钩,我无法使用它进行任何修改。
到目前为止,我找不到EDD将购物车项目存储到收据和下载历史记录等的位置,如果我知道它将产品添加到何处,那将是一个很好的起点,这样我就可以防止这样做不知何故。