usuario1
Estoy tratando de vincular una función a la eliminación del pedido (cuando se hace clic en Eliminar permanentemente desde la página de administración), pero por alguna razón no se llama a la función. Mi código se ve algo como
add_action('woocommerce_before_delete_order_item', function($id) {
$order = new WC_Order($id);
//do some stuff with order meta data
}, 10, 1);
Traté de lanzar una excepción dentro de la función pero no ocurrió ningún error. ¿Alguien puede ayudar?
Andy
Él woocommerce_before_delete_order_item
La acción se ejecuta cada vez que se elimina un artículo de un pedido, no cada vez que se elimina un pedido. Necesitas usar el before_delete_post
gancho:
add_action('before_delete_post', function($id) {
$post_type = get_post_type($id);
if ($post_type !== 'shop_order') {
return;
}
$order = new WC_Order($id);
//do some stuff with order meta data
}, 10, 1);
Dependiendo de lo que desee hacer, es posible que desee engancharse a la acción en una etapa anterior cambiando el argumento de prioridad de 10
a algo más pequeño.
-
También está el
woocommerce_delete_order
gancho (No puedo decir si es nuevo, pero quería mencionarlo para otras personas que lean eso)– Petschko
2 de febrero de 2021 a las 14:19
-
@Petschko, parece que
woocommerce_delete_order
se llama después se borra el pedido: github.com/woocommerce/woocommerce/blob/…– Andy
2 de febrero de 2021 a las 16:59
-
gracias por esta información, en algunos casos puede ser útil solo para hacer cosas después se borra el pedido
– Petschko
8 de febrero de 2021 a las 12:51
si tiene la intención de utilizar el Mover a la thrash desde la página de detalles del pedido en el panel de administración, puede usar el wp_trash_post
. Él before_delete_post
no funcionó para mí
function onOrderDelete($orderId){
$post_type = get_post_type($orderId);
if($post_type !== 'shop_order') {
return;
}
$order = wc_get_order($orderId);
// do whatever with $order
}
add_action('wp_trash_post', 'onOrderDelete', 10, 1);
function restrict_post_deletion($post_ID){
$type = get_post_type($post_ID);
if($type == 'shop_order'){
$order = new WC_Order($post_ID);
//do some stuff with order data
}
}
add_action('wp_trash_post', 'restrict_post_deletion', 10, 1);
add_action('before_delete_post', 'restrict_post_deletion', 10, 1);
Pruebe este fragmento de código
¿Está tratando de conectarse cuando se elimina un pedido o se elimina un artículo en un pedido? Te estás conectando a la acción de eliminación de elementos.
– Andy
28 de junio de 2016 a las 14:11
Estoy tratando de enganchar la función después de hacer clic en eliminar permanentemente cuando se completa el pedido
– usuario1
28 de junio de 2016 a las 14:13
¿Desea aplicar la función de eliminación de gancho en el pedido?
– muy solo
28 de junio de 2016 a las 14:22