挂钩 Woocommerce 订单中的自定义价格

Hook for custom price in Woocommerce order

我目前正在开发一个网上商店,我需要在其中执行单独的价格功能。到目前为止,在 woocommerce hooks 的帮助下,我已经成功地操纵了购物车和结账中的价格,这完全没有任何问题。我用过 woocommerce_cart_item_pricewoocommerce_cart_item_subtotalswoocommerce_cart_subtotalwoocommerce_cart_total 的钩子。

现在我们来谈谈我需要在不久的将来解决的问题。我的自定义函数的价格不包含在 woocommerce 订单中。那么,在woocommerce创建订单之前,是否有一个钩子来操纵订单中的产品价格?

我看过https://docs.woocommerce.com/wc-apidocs/hook-docs.html 但没有成功。

Woocommerce 创建订单时从哪里获取价格? _price 元字段、woocommerce_get_price 挂钩、购物车或其他内容。如果有人能向我解释这一点,我将不胜感激。我发现 woocommerce 与它的价格来源不太一致。

如果您不明白我的问题或我相对较差的英语,请提问。提前致谢。

我使用了 woocommerce_get_price 挂钩,当您更改它时,购物车将使用更改后的价格来计算总价(价格 * 数量)。

下订单后,WooCommerce 会根据总计和数量计算产品价格,如果您更改这两个值(总计或数量)中的一个,产品价格也会发生变化。

换句话说,订单创建后价格是动态的。

编辑:

添加了更改价格的方法

function change_price( $cart ) {

    //  Exit function if price is changed at backend
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    foreach ( $cart->get_cart() as $key => $item ) {
        $item['data']->set_price( $custom_price );
    }
 }
 add_action( 'woocommerce_before_calculate_totals', 'change_price', 10, 1);