2016-06-28 13 views
1

J'essaye d'accrocher une fonction à la suppression d'ordre (quand la suppression permanente est cliquée de la page d'admin) mais pour une raison quelconque la fonction n'est pas appelée. Mon code ressemble à quelque chose commeWoocommerce ordre crochet de suppression de commande n'est pas appelé

add_action('woocommerce_before_delete_order_item', function($id) { 
    $order = new WC_Order($id); 
    //do some stuff with order meta data 
}, 10, 1); 

J'ai essayé de lancer et d'exception à l'intérieur de la fonction, mais aucune erreur ne s'est produite. Quelqu'un peut-il aider?

+0

Essayez-vous de brancher dans lorsqu'une commande est supprimée ou un élément est supprimé sur une commande? Vous vous accrochez à l'action de suppression d'élément. – Andy

+0

Je suis en train d'accrocher la fonction après la suppression permanente est cliqué lorsque la commande est terminée – user1

+0

Vous souhaitez appliquer un crochet sur la fonction de suppression de commande? –

Répondre

3

L'action woocommerce_before_delete_order_item s'exécute chaque fois qu'un élément est supprimé d'une commande, et non chaque fois qu'une commande est supprimée. Vous devez utiliser le crochet before_delete_post:

add_action('before_delete_post', function($id) { 
    global $post_type; 

    if($post_type !== 'shop_order') { 
     return; 
    } 

    $order = new WC_Order($id); 
    //do some stuff with order meta data 
}, 10, 1); 

Selon ce que vous voulez faire, vous pouvez accrocher à l'action à un stade plus précoce en changeant l'argument prioritaire de 10 à quelque chose plus petit.

+0

Merci !!!!!! – user1

0
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); 

Essayez cet extrait de code