1

Ich versuche, die Rechnungsdetails der Kunden im Frontend zu aktualisieren. Ich habe den folgenden Code:wc_update_order() Funktioniert nicht wie erwartet

if(isset($_POST['save_order'])){ 
    $update_billing_details = wc_update_order(array('order_id' => $update_order_id)); 
    $update_order_args = array(
     'first_name' => $_POST['billing_first_name'] 
    ); 
$update_billing_details->set_address($update_order_args, 'billing'); 
if($update_billing_details){ 
    echo "success"; 
} 
} 

Was passiert ist, der erste Name der ZWEIMAL speichern Taste nach der Kollision wird aktualisiert.

Beispiel:

Der ursprüngliche Name ist 'John'. Wenn ich "Johnny" mache und "Speichern" drücke, wird immer noch "John" angezeigt. Und wenn ich den Namen 'Johndel' eintippe, dann drücke auf Speichern, es wurde 'Johnny' und so weiter.

Aber, wenn ich meinen Code wie folgt machen:

if(isset($_POST['save_order'])){ 
    $update_order_args = array(
       '_billing_first_name' => $_POST['billing_first_name'], 
       'order_id' => $update_order_id 
       ); 
    $update_billing_details = wc_update_order($update_order_args); 
} 

Nichts passiert.

Was mache ich falsch? Ich basierte meine Arbeit durch this question.

Jede Hilfe wird sehr geschätzt.

Danke,

-Eli

Antwort

1

Sie könnten versuchen, stattdessen update_post_meta() Funktion zu nutzen, auf diese Weise:

if(isset($_POST['save_order']) && isset($_POST['billing_first_name'])){ 
    update_post_meta($update_order_id, '_billing_first_name', sanitize_text_field($_POST['billing_first_name'])); 
} 

Sie müssen sicher sein, dass $update_order_id die Bestell-ID hier definiert ist .

Da ich das nicht testen kann, kann ich nichts garantieren ... Ich hoffe, das wird funktionieren.

Verwandte Themen