我试图操纵基于度量的定价。如何获取产品价格。我这里有示例代码。
if( isset( $_POST[\'height_option\'] ) )
$cart_item[\'custom_data\'][\'height\'] = sanitize_key( $_POST[\'height_option\'] );
if( isset( $_POST[\'width_option\'] ) )
$cart_item[\'custom_data\'][\'width\'] = sanitize_key( $_POST[\'width_option\'] );
// Make calculation and save calculated price
if( isset( $_POST[\'height_option\'] ) && isset( $_POST[\'width_option\'] ) ){
$height = (int) sanitize_key( $_POST[\'height_option\'] );
$width = (int) sanitize_key( $_POST[\'width_option\'] );
if( $width > 0 && $height > 0 ){
$total_price = ( ( $height ) * ( $width ) ) * 1; // <== The calculation (need to multiply by product price)
$cart_item[\'custom_data\'][\'price\'] = round($total_price, 2); // Save the price in the custom data
}
}
return $cart_item;
最合适的回答,由SO网友:Abuzer Firdousi 整理而成
如果您正在寻找更新购物车项目价格。您可以尝试:
add_action( \'woocommerce_cart_loaded_from_session\', array(\'update_cart_item_price\' ),10);
public function update_cart_item_price( $cart_obj ) {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( \'DOING_AJAX\' ) ){
return;
}
if( !WC()->session->__isset( "reload_checkout" )) {
foreach ( $cart_obj->get_cart() as $key => $value ) {
$_product = wc_get_product($value[\'product_id\']);
$get_price = $_product->get_price();
$price_to_add = 10; // write your logic for this
$value[\'data\']->set_price($get_price + $yards);
}
}
}