2016-06-28 8 views
1

Я пытаюсь подключить функцию к удалению заказа (когда навсегда удаляется щелчок с страницы администратора), но по какой-то причине функция не вызывается. Мой код выглядит примерно так:Woocommerce order delete hook callback не вызывается

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

Попробуйте этот код

Смежные вопросы