Woocommerce Order Delete Hook Callback wird nicht aufgerufen

Lesezeit: 2 Minuten

Benutzeravatar von Benutzer1
Benutzer1

Ich versuche, eine Funktion mit dem Löschen von Bestellungen zu verknüpfen (wenn auf der Admin-Seite auf dauerhaftes Löschen geklickt wird), aber aus irgendeinem Grund wird die Funktion nicht aufgerufen. Mein Code sieht in etwa so aus

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

Ich habe versucht, eine Ausnahme innerhalb der Funktion auszulösen, aber es ist kein Fehler aufgetreten. Kann jemand helfen?

  • Versuchen Sie, sich einzuklinken, wenn eine Bestellung gelöscht wird oder ein Artikel in einer Bestellung gelöscht wird? Sie schließen sich der Elementlöschaktion an.

    – Andy

    28. Juni 2016 um 14:11 Uhr

  • Ich versuche, die Funktion einzuhaken, nachdem nach Abschluss der Bestellung auf dauerhaftes Löschen geklickt wurde

    – Benutzer1

    28. Juni 2016 um 14:13 Uhr

  • Sie möchten die Hook-on-Order-Löschfunktion anwenden?

    – mujuonly

    28. Juni 2016 um 14:22 Uhr

Benutzeravatar von Andy
Andy

Das woocommerce_before_delete_order_item Die Aktion wird jedes Mal ausgeführt, wenn ein Artikel aus einer Bestellung gelöscht wird, nicht jedes Mal, wenn eine Bestellung gelöscht wird. Sie müssen die verwenden before_delete_post Haken:

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

Je nachdem, was Sie tun möchten, möchten Sie möglicherweise zu einem früheren Zeitpunkt in die Aktion einsteigen, indem Sie das Prioritätsargument von ändern 10 zu etwas kleinerem.

  • Es gibt auch die woocommerce_delete_order Haken (Kann nicht sagen, ob es neu ist, aber ich wollte es für andere Leute erwähnen, die das lesen)

    – Petschko

    2. Februar 2021 um 14:19 Uhr

  • @Petschko, so sieht es aus woocommerce_delete_order wird genannt nach dem Die Bestellung wird gelöscht: github.com/woocommerce/woocommerce/blob/…

    – Andy

    2. Februar 2021 um 16:59 Uhr

  • danke für diese Informationen, in manchen Fällen kann es sinnvoll sein, nur Sachen zu machen nach dem Die Bestellung wird gelöscht

    – Petschko

    8. Februar 2021 um 12:51 Uhr

wenn Sie beabsichtigen, die zu verwenden Wechseln Sie zu Thrash Auf der Bestelldetailseite im Admin-Dashboard können Sie die wp_trash_post. Das before_delete_post hat bei mir nicht funktioniert.

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

Probieren Sie dieses Code-Snippet aus

1437860cookie-checkWoocommerce Order Delete Hook Callback wird nicht aufgerufen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy