WooCommerce: enganche al guardar cambios en el producto en un pedido

3 minutos de lectura

llevo horas buscando…

No puedo entender cómo ejecutar una función al hacer clic en “guardar” después de editar la cantidad de un producto en un pedido existente.

Intenté esto:

add_action('woocommerce_order_edit_product', 'your_function_name');
function your_function_name(){
//my php function code would be here
}

pero la función your_function_name no se llama al hacer clic en guardar.

Probé la función y al llamarla directamente funciona como debería, así que creo que me equivoqué de hook…

  • – ¿Estabas haciendo esto desde el lado del administrador o desde el lado en vivo? – si vivo lado… del carrito?

    – Rebecca Dessonville

    29 de enero de 2015 a las 5:21

  • Lado del administrador, al ver los detalles del pedido.

    – Johano Fierra

    29 de enero de 2015 a las 9:15

WooCommerce enganche al guardar cambios en el producto en un
bocinazo31

después de luchar con este problema durante 2 días, lo encontré: hay dos ganchos, uno antes y otro después de guardar:

  1. woocommerce_before_save_order_items
  2. woocommerce_saved_order_items

ambos se activan al guardar un pedido en el backend. uno antes del guardado y otro después.

ambos ganchos llevan las mismas variables: $order_id (int) & $items (array)

Supongo que con el primer gancho, podría obtener el pedido anterior y comparar su contenido con la matriz de elementos para ver qué ha cambiado. al menos esto es lo que trato de lograr ahora.

así es como activarías esto:

add_action( 'woocommerce_before_save_order_items', 'so42270384_woocommerce_before_save_order_items', 10, 2 );
function so42270384_woocommerce_before_save_order_items( $order_id, $items ) {
    echo $order_id;
    var_dump( $items );
}

ser consciente..

agregar un producto a un pedido existente implementa otro enlace que se llama antes de este (por lo que al presionar GUARDAR, la función anterior se activará, pero el pedido y sus artículos ya están configurados ANTES de guardar (al agregar un producto, el pedido se guardará inmediatamente) ). eso significa $order = new WC_Order( $order_id ); tendrá los elementos nuevos ya en él, antes y después, por lo que no hay forma de encontrar lo que ha cambiado). pero el woocommerce_ajax_add_order_item_meta hook se activa en ‘agregar producto’ y me ayudó en ese sentido. feliz codificación a todos..

Verifique su registro de errores. Debería haber algo de información allí. Si estoy viendo la acción correcta, se necesitan cuatro argumentos:

do_action( 'woocommerce_order_edit_product', $this->id, $item_id, $args, $product );

Entonces tu código debería ser:

add_action('woocommerce_order_edit_product', 'your_function_name', 10, 4);
function your_function_name($id, $item_id, $args, $product){
//my php function code would be here
}

  • No hay nada en el error_log… Lo probé con y sin los 2 argumentos adicionales, en ambos sentidos la función ‘your_function_name’ no se activa. ‘your_function_name’ no necesita ningún argumento, es solo una función de prueba para ver si se activa en absoluto.

    – Johano Fierra

    29 de enero de 2015 a las 9:07


  • Lo siento. Estaba equivocado sobre cómo funciona add_action. Aparentemente puedes omitir los argumentos. Así que ignora mi respuesta…

    – bWlrYWphdWhvbmVu

    01/02/2015 a las 22:40

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad