2016-06-17 9 views
-1

Wenn sich ein Benutzer auf der Website anmeldet (Benutzername und E-Mail-Adresse eingeben) und DANN zum Kauf gehen und die Angaben zur Rechnungsstellung und zum Versand ausfüllen, ist der Feldname im WordPress-Benutzerprofil leer!WooCommerce - Füllen der Vor- und Nachnamenfelder im Benutzerprofil - BUG?

Wenn der Kunde sich nicht vorher registriert, aber den Zeitpunkt des Kaufs aufzeichnet, werden der Vor- und Nachname der Benutzerprofilfelder ausgefüllt.

Irgendeine Lösung?

Danke.

Siehe diesen Screenshot von Wordpress-Benutzer-Liste:

enter image description here

Antwort

0

Was Sie zeigen die leer Anzeigename in der Benutzerliste. Der Vorname und der Nachname des Benutzers sind vorhanden. So

ist nicht sehr wichtig, aber es ist sicherlich nützlich für den Administrator oder shop_manager Benutzerrollen für Suchzwecke diese Informationen in der Benutzerliste zu haben, einen Benutzer dieses „Anzeigename“ abruft.

Hier ist eine Funktion, die ausgelöst wird, wenn sich ein Benutzer zum ersten Mal registriert. Innen ist es, überprüfen wir, ob der „Anzeigename“ existiert:

  • Wenn der „Anzeigename“ existiert, wir verlassen die Funktion.
  • Wenn der "Anzeigename" nicht existiert, setzen wir diesen Anzeigenamen aus dem Vornamen und Nachnamen des Benutzers, dann aktualisieren wir dies in der Datenbank.

Verwenden Sie diesen Code, um es in function.php Datei Ihrer aktiven Kind Thema oder ein Thema einfügen:

add_action('user_register', 'wc_new_user_display_name_update', 10, 1); 

function wc_new_user_display_name_update($user_id) { 

    // Check if user display name exist. 
    // If yes, we stop the process getting out of this function. 
    if (!empty(get_the_author_meta('display_name', $user_id)) { 
     exit; 
    } 

    $user_info = get_user_meta($user_id); 

    if (!empty($user_info->first_name)) { 
     $user_first_name = $user_info->first_name; 
    } else { 
     $user_first_name = $user_info->billing_first_name; 
    } 

    if (!empty($user_info->last_name)) { 
     $user_last_name = $user_info->last_name; 
    } else { 
     $user_last_name = $user_info->billing_last_name; 
    } 

    // setting up user display name 
    $display_name = $user_first_name . ' ' . $user_last_name; 

    // setting up user display name 
    wp_update_user(array('ID' => $user_id, 'display_name' => $display_name)); 
} 

Base auf diesen Thread (dank helgatheviking): After woocommerce/wordpress registration

0

Mein Problem war, dass aufgrund der benutzerdefinierten Woocommerce-Checkout und wenig durcheinander geratenen Codierung, es nicht den WordPress-Vornamen des Benutzers & Nachnamen Felder zur Zeit der Aktualisierung war eine neue Bestellung aufgeben.

Ich habe versucht, den obigen Code mit kleinen Verbesserungen basierend auf meinem Szenario, aber das hat nicht funktioniert für mich, wie der Benutzer erstellt wurde und dann die Bestellung wurde platziert - so gab es keine Informationen über die Bestellung bis zu diesem Zeitpunkt.

Ich habe versucht, andere Lösungen wie diese zu haken - Updating the WooCommerce 'User Firstname Field' with 'Billing First Name' on check out, aber das hat auch nicht für mich funktioniert.

oder versucht, process_checkout zu haken, aber nichts hat funktioniert.

löste ich das Problem, indem die Änderungen in E-Mail-Order-details.php machen (WooCommerce der E-Mail-Vorlage)

ich die Linie unten nach hinzugefügt: <?php if (! $sent_to_admin) : ?> am 24. Zeile.

<?php wp_update_user(array('ID' => (int)$order->user_id, 'first_name' => $order->billing_first_name, 'last_name' => $order->billing_last_name)); ?> 

Grund: Ich wollte die Werte ändern, nachdem der Auftrag erteilt wird, und da E-Mail nach der Bestellung gesendet wird, ist es sinnvoll, diese

hinzufügen