Luigino
En mi complemento personalizado, necesito detectar cada vez que el estado de un pedido cambia de wc_on_hold
a wc_completed
así que traté de escribir:
function so_status_completed( $order_id, $old_status, $new_status ) {
// if user is active , then get order amount and do all other personal calculations
global $wpdb;
$order = wc_get_order( $order_id );
//$payment_method = $order->get_payment_method(); //returns payment method bacs,cheque,cod etc
$user_id = $order->get_user_id();
$total = $order->get_total();
$order_data = $order->get_data();
//$order_total = $order->get_formatted_order_total();
$order_total = $order->get_total();
echo '<script>console.log("Debug Objects: Check order_total ' . $order_total. '");</script>';
}
add_action('woocommerce_order_payment_status_changed','so_status_completed',10,1);
Pero cuando traté de cambiar una prueba de pedido de suspendida a completada, no pude acceder a la Consola de Chrome que resuena dándome el precio del pedido… tal vez usar add_action no sea la forma correcta de poner a un oyente en ese evento. ?
Además, ya que estoy aquí, estoy usando $order-get_total() que busqué en la red sobre su funcionalidad pero no encontré documentos profundos, así que quiero preguntarle si ese método es el correcto para recuperar el monto del pedido sin cargo. ¿aplicado?
¡Gracias! ¡¡¡Salud!!!
“Necesito detectar cada vez que el estado de un pedido cambia de
wc_on_hold
awc_completed
“
Tendrías que cambiar tu gancho a woocommerce_order_status_changed
.
“No pude acceder a la consola de Chrome, ese eco me da el precio del pedido”
no puedes usar javascript
y console.log
en este anzuelo. Tendrías que usar el die
función o la error_log
función para registrarlo en su debug.log
expediente.
Usando die
función
add_action('woocommerce_order_status_changed', 'so_status_completed', 10, 3);
function so_status_completed($order_id, $old_status, $new_status)
{
$order = wc_get_order($order_id);
//$order_total = $order->get_formatted_order_total();
$order_total = $order->get_total();
die($order_total);
}
Usando error_log
función
dd_action('woocommerce_order_status_changed', 'so_status_completed', 10, 3);
function so_status_completed($order_id, $old_status, $new_status)
{
$order = wc_get_order($order_id);
//$order_total = $order->get_formatted_order_total();
$order_total = $order->get_total();
error_log(print_r('order total: ' . $order_total, true));
}
Segunda pregunta
“Ya que estoy aquí, quiero preguntarte si
$order-get_total()
¿Es el correcto para recuperar el monto del pedido sin aplicar la tarifa?”
Es posible que desee echar un vistazo a la $order->get_subtotal()
para los totales antes de envío, cupones e impuestos:
Por favor vea estas respuestas relacionadas:
- https://stackoverflow.com/a/47782647/15040627
- https://stackoverflow.com/a/61102779/15040627
- https://stackoverflow.com/a/32634480/15040627
- https://stackoverflow.com/a/44708344/15040627