2017-07-24 2 views
0

Es ist schon ein paar Tage jetzt, und ich kann nicht einen Haken für das Hinzufügen/Aktualisieren von Benutzer metaWooCommerce Admin erstellen, um Kunden-ID erhalten auf erstellen

add_user_meta('user_id', 'custom_key', 'custom_value'); 

scheinen zu finden, wenn sie einen Auftrag in WooCommerce Admin-Erstellung (woocommerce-> orders-> Bestellung hinzufügen), Backend. Mit

add_action('woocommerce_process_shop_order_meta', 'admin_process_shop_order', 10, 1); 

Das für Dinge zu tun, funktioniert gut, während die Bestellung bearbeitet wird. Allerdings muss ich die Kundennummer bekommen, die von dem, was ich sagen kann, nicht existiert, bis die Bestellung tatsächlich erstellt wird (sinnvoll).

So ist meine Frage, welcher Haken (oder eine andere Lösung) kann ich die Kunden-ID zu bekommen verwenden, um, sobald die Bestellung mit

get_post_meta($order_id, '_customer_user', true); 
+0

followng Haken mit Auftragsstatus Versuchen, 'woocommerce_order_status_pending woocommerce_order_status_failed woocommerce_order_status_on-halten woocommerce_order_status_processing woocommerce_order_status_completed woocommerce_order_status_refunded woocommerce_order_status_cancelled' – Gugan

+0

Ein Haken aus, nachdem die Zahlung abgeschlossen ist,' woocommerce_payment_complete' – Gugan

Antwort

1

und durchsuchbare erstellt Danke @Gugan für Ihre Anregungen! Sieht so aus Mit deiner Hilfe konnte ich endlich diese Sauerei sortieren lassen :)

Da ich das nur einmal abfeuern wollte, dh wenn die Bestellung erstellt wird (und nicht nochmal wenn aktualisiert), habe ich mich zusammengesetzt zwei Aktionen.

Zuerst 'woocommerce_process_shop_order_meta'. Hier kann ich überprüfen, ob die Post meta vorhanden ist (wenn ja, hat der Auftrag bereits erstellt worden und sollte in Ruhe gelassen werden)

function check_order($post_id){ 
    $new_order = get_post_meta($post_id, '_customer_user', true); 
    if(!$new_order){ 
     add_action('woocommerce_order_status_[MY_CUSTOM_ORDER_STATUS]-processing', 'total_count'); 
    } 
}add_action('woocommerce_process_shop_order_meta', 'check_order', 10, 1); 

Wenn dies eine neue Ordnung bewegen auf ‚woocommerce_order_status_ [MY_CUSTOM_ORDER_STATUS] -Verarbeitung ' (mit meiner Funktion ‚TOTAL_COUNT‘)

function total_count($post_id){ 
    $order = wc_get_order($post_id); 
    $customer_id = $order->get_user_id(); 
    $user_role = get_user_meta($customer_id, 'wp_capabilities', true); 
    $custom = serialize(array('[MY_CUSTOM_USER_ROLE]' => true)); 
    $today = date('Y-m-d'); 
    if($user_role = $custom){ 
     $current_total = get_user_meta($customer_id, 'total', true); 
     $increment_total = $current_total+1; 
     update_user_meta($customer_id, 'total', $increment_total); 
     update_user_meta($customer_id, 'last', $today); 
    } 
} 

Jetzt habe ich nur einen Zuwachs auf meinem benutzerdefinierten metas ‚total‘ erhalten und ‚last‘, wenn es sich um eine neue Ordnung und wenn der Kunde von meiner benutzerdefinierte Benutzerrolle Ein weiterer Vorteil ist, dass es nur für einen Auftragsstatus funktioniert (d. H. In meinem Fall [MY_CUSTOM_ORDER_STATUS] -processing).

Ich schreibe hier nur meine Lösung für jeden, der ähnliche Aufträge für die Auftragserstellung bearbeiten möchte.

Verwandte Themen