woocommerce 5.5.2上的自定义价格

puruo6ea  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(171)

我在这件事上纠缠太久了。我在stackoverflow上找到的所有东西都试过了,我觉得自己好像在兜圈子。
我在产品页面上有一张表格,要求提供发票号码和发票金额。我可以使用以下代码获取产品属性以更新并显示在购物车页面上:

function invoice_save_price( $cart_item_data, $product_id ) {
    if( isset( $_POST['invoice_id'] ) ) {
        $cart_item_data = array();
        $cart_item_data[ "invoice_number" ] = $_POST['invoice_number'];
        $cart_item_data[ "invoice_amount" ] = $_POST['invoice_amount'];
    }
    return $cart_item_data;
}

add_filter( 'woocommerce_add_cart_item_data', 'invoice_save_price', 99, 2 );

我使用的是自定义产品类型-扩展简单产品。我不确定这样做是否正确,因为我的产品必须设置默认价格(目前为1美元),否则无法显示。

function wcpt_register_invoice_type () {

    class WC_Product_Invoice extends WC_Product {

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

}

但是,我无法更新价格。我的代码如下:

add_action( 'woocommerce_before_calculate_totals', 'invoice_add_custom_price', 99 );

function invoice_add_custom_price($cart_object) {
    if (isset($_POST['invoice_id'])) {
        foreach ( $cart_object->get_cart() as $value ) {
            $newValue = number_format($_POST['invoice_amount'],2);
            $value['data']->set_price($newValue);
        }
        return $value;
    }
}

我认为可能与另一个插件有冲突,所以我开始测试wordpress 5.8和woocommerce 5.5.2的干净安装
我在woocommerce(3.x)的旧版本中发现了很多关于这一点的引用,但在以后的版本中我运气不太好。
有人能告诉我我错过了什么吗?任何帮助都将不胜感激!
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题