2016-06-28 19 views
1

私は注文削除に機能をフックしようとしています(管理ページから永久に削除をクリックすると)何らかの理由で機能が呼び出されません。私のコードは次のように見えますWoocommerceの注文削除フックコールバックが呼び出されていません

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

機能内に例外をスローしようとしましたが、エラーは発生しませんでした。誰かが助けることができますか?

+0

、このコードスニペットを試してみてください、あなたは注文が削除されたりアイテムが順に削除されたときにフックしようとしていますか?あなたはアイテム削除アクションにフックしています。 – Andy

+0

注文が完了したら、永久に削除した後に機能をフックしようとしています – user1

+0

注文削除機能にフックを適用したいですか? –

答えて

3

woocommerce_before_delete_order_itemアクションは、アイテムがオーダーから削除されるたびに実行され、オーダーが削除されるたびに実行されません。あなたは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); 

を、あなたは10から小さいものに優先引数を変更することにより、早い段階でのアクションに上のフックすることができます。

+0

ありがとう!!!!!! – 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);