Ich füge eine Schaltfläche ‚Entfernen‘ neben jedem Element in der Bestellung über diese Funktion in der functions.php:WooCommerce - laden Sie die Bestellung auf einen Klick über Ajax
add_action('woocommerce_order_item_meta_end', 'display_remove_order_item_button', 10, 3);
function display_remove_order_item_button($item_id, $item, $order){
// Avoiding displaying buttons on email notification
if(! (is_wc_endpoint_url('view-order') || is_wc_endpoint_url('order-received'))) return;
if(isset($_POST["remove_item_$item_id"]) && $_POST["remove_item_$item_id"] == 'Remove this item'){
wc_delete_order_item($item_id);
}
echo '<form class="cart" method="post" enctype="multipart/form-data" style= "margin-top:12px;">
<input type="submit" class="button" name="remove_item_'.$item_id.'" value="Remove this item" />
</form>';
}
Das Problem ist, Nachdem Sie auf Entfernen geklickt haben, müssen Sie die Bestellseite aktualisieren, damit der Artikel verschwindet.
Ich möchte, dass das automatisch passiert. Ich nehme an, dass ich Ajax verwenden muss, um die obige Funktion aufzurufen, aber nicht ganz sicher, wie das geht.
Vielen Dank im Voraus
Danke. Das scheint zu funktionieren. Es wird angezeigt: "Diese Bestellung wurde entfernt" und das Element verschwindet bei der Seitenaktualisierung. Ist es jedoch möglich, dass es von der Seite entfernt wird, ohne es zu aktualisieren? – Adrian
Ein Problem, das ich bemerkt habe, ist, dass es nur für 1 Element funktioniert. Wenn Sie dann bei einem anderen Objekt auf "Objekt entfernen" klicken, wird es immer noch gelöscht, es bleibt jedoch bei "Daten werden geladen" hängen. – Adrian
@Adrian Ich habe den jQuery-Code bearbeitet, um das Element von der Bestellseite zu entfernen, wenn es gelöscht wird. Dies ist getestet und funktioniert, wenn Sie irgendein Problem haben, machen Sie bitte Ihr eigenes Debugging, da es mit Ihrem Setup oder anderen Variablen zusammenhängen muss. Wenn dies hilft, überprüfen Sie es bitte als Antwort. –