php - personalizar - plugin woocommerce
WooCommerce: agregar un precio personalizado a cada producto en el carro (1)
Me gustaría actualizar el precio de los productos que agregan un precio personalizado en el carrito usando esta simple pieza de código update_post_meta( $product->id, ''_regular_price'', $frame_price_added);
.
Nota: lo que intento lograr es agregar este precio personalizado a cada producto en el carrito.
$frame_price_added
obtener $frame_price_added
esta manera:
$frame_price = $res[''_number_field''][0];
$frame_price_added = $product->price + $frame_price;
Aquí $product->price
es el precio que proviene del producto woocomerce y $frame_price
proviene de mi precio recién agregado.
Me preguntaba cómo puedo asociar este nuevo precio al carrito, porque no funciona.
He intentado usar update_post_meta( $product->id, ''_price'', $frame_price_added);
y cuando la página se actualiza, agrega y almacena el precio personalizado al producto y lo guarda.
¿Alguna idea sobre cómo puedo lograr esto correctamente?
Gracias.
Editar: Una cosa más ... He buscado una función que se puede
woocommerce_template_single_add_to_cart
para agregar al carro y no encontré nada, y también se llamó a un gancho de acción enwoocommerce_template_single_add_to_cart
que teníawoocommerce_single_product_summary
pero no encontró ninguna función.
Actualización: para WooCommerce 3.0+ Cambie los precios de los artículos en la versión 3.0 de WooCommerce
Puede usar woocommerce_before_calculate_totals
hook para personalizar los precios de sus artículos de carrito.
Puede definir variables de $framed_price
como globales en su función, de esta manera.
Este es el código:
// 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;
}
}
O obtenga su precio personalizado dentro de la función enganchada (opcionalmente, dependiendo de cómo obtenga su precio personalizado) :
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;
}
}
Este código está probado y funcionando.
Naturalmente, este código va en el archivo function.php de su tema (o tema) hijo activo o en cualquier archivo de complemento.
Referencia: Carro de WooCommerce - Variable de precio dinámico pasa al gancho de precio personalizado