Php WooCommerce-为购物车中的每个产品添加自定义价格
我想用这个简单的代码更新购物车中的产品价格,添加一个自定义价格Php WooCommerce-为购物车中的每个产品添加自定义价格,php,wordpress,woocommerce,cart,product,Php,Wordpress,Woocommerce,Cart,Product,我想用这个简单的代码更新购物车中的产品价格,添加一个自定义价格update\u post\u meta($product->id,''u regular\u price',$frame\u price\u added) 注意:我试图实现的是将此自定义价格添加到购物车中的每个产品。 我尝试通过以下方式添加$frame\u price\u: $frame_price = $res['_number_field'][0]; $frame_price_added = $product->price
update\u post\u meta($product->id,''u regular\u price',$frame\u price\u added)代码>
注意:我试图实现的是将此自定义价格添加到购物车中的每个产品。
我尝试通过以下方式添加$frame\u price\u
:
$frame_price = $res['_number_field'][0];
$frame_price_added = $product->price + $frame_price;
这里的$product->price
是来自woocomerce产品的价格,$frame\u price
是来自我新添加的价格
我想知道如何将这个新价格与购物车联系起来,因为它不起作用
我试过使用update\u post\u meta($product->id,''u price',$frame\u price\u added)代码>当页面刷新时,它会将自定义价格添加并存储到产品中,然后保存
你知道我怎样才能做到这一点吗
谢谢
编辑:还有一件事……我搜索了一个可以在“添加到购物车”上调用的函数,但没有找到任何东西,还有一个在woocommerce\u模板\u single\u add\u-to\u购物车
上调用的动作挂钩,它有woocommerce\u single\u product\u summary
,但没有找到任何函数
更新:适用于WooCommerce 3.0+
您可以在计算总计之前使用woocommerce\u
钩子自定义购物车项目价格
通过这种方式,您可以在函数中将$framed\u price
变量定义为全局变量
代码如下:
// getting your additional price outside the function (making any conditional calculations)
$framed_price = 20;
add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 );
function add_custom_total_price( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
global $framed_price;
foreach ( $cart_object->get_cart() as $key => $value ) {
$value['data']->price += $framed_price;
}
}
或者在钩子函数中获取自定义价格(可选,取决于获取自定义价格的方式):
此代码经过测试并正常工作。
当然,这段代码会出现在活动子主题(或主题)的function.php文件或任何插件文件中
参考资料:WooCommerce将\u常规价格
与销售价格
和销售价格的销售日期进行比较,以确定\u价格
键。\u价格
就是用户将支付的价格。最好的,我可以告诉你,听起来你可能想考虑。@ HelgHivivigOh我一直在阅读WordPress表单上的所有评论-我也读到了同样的内容:P很抱歉再次询问,但是我正在寻找一种方法,如果我们更新实际价格,它在CART中是正确的。所以我想的是添加一个钩子,并在结帐后更新钩子中的价格。如何从表单中获取$u价格?我不想这样static@sona你到底是什么意思/想要什么?什么形式,什么领域?
add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 );
function add_custom_total_price( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$framed_price = 20;
foreach ( $cart_object->get_cart() as $key => $value ) {
$value['data']->price += $framed_price;
}
}