挂钩 Woocommerce 订单中的自定义价格
Hook for custom price in Woocommerce order
我目前正在开发一个网上商店,我需要在其中执行单独的价格功能。到目前为止,在 woocommerce hooks 的帮助下,我已经成功地操纵了购物车和结账中的价格,这完全没有任何问题。我用过 woocommerce_cart_item_price
、woocommerce_cart_item_subtotals
、woocommerce_cart_subtotal
和 woocommerce_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);
我目前正在开发一个网上商店,我需要在其中执行单独的价格功能。到目前为止,在 woocommerce hooks 的帮助下,我已经成功地操纵了购物车和结账中的价格,这完全没有任何问题。我用过 woocommerce_cart_item_price
、woocommerce_cart_item_subtotals
、woocommerce_cart_subtotal
和 woocommerce_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);