2017-08-17 3 views
0

dans la base de données que nous avons metauser table qui contient:
Le first_name et last_name champs
Évitez WooCommerce Commander formulaire de facturation pour remplacer les données par défaut Wordpress

Ce sont par défaut Wordpress premier et dernier prénom.

Et nous avons aussi:
Le billing_first_name et billing_last_name.

Maintenant, lorsque l'utilisateur remplit le formulaire de facturation et de procéder à la procédure de commande, Woocommerce mettre à jour les deux champs avec les nouvelles valeurs des champs de nom de facturation (ceux par défaut).

J'ai essayé beaucoup de choses utilisées des actions telles que:

woocommerce_before_checkout_billing_form 

ou

woocommerce_after_checkout_billing_form 

a également essayé de mettre à jour meta:

update_user_meta() 

Mais il ne fonctionne pas.

je le veux de ne pas écraser le prenom par défaut et last_name, mais ne garder que les nouvelles valeurs dans billing_first_name et billing_last_name

Je pense que le processus par défaut est comme ça toute aide sur
https://gist.github.com/claudiosanches/ae9a8b496c431bec661b69ef73f1a087

Ceci s'il vous plaît?

Répondre

1

La voie est d'utiliser un funtion personnalisé accroché dans le crochet d'action woocommerce_checkout_update_customer:

add_action('woocommerce_checkout_update_customer','custom_checkout_update_customer', 10, 2); 
function custom_checkout_update_customer($customer, $data){ 

    if (! is_user_logged_in() || is_admin()) return; 

    // Get the user ID 
    $user_id = $customer->get_id(); 

    // Get the default wordpress first name and last name (if they exist) 
    $user_first_name = get_user_meta($user_id, 'first_name', true); 
    $user_last_name = get_user_meta($user_id, 'last_name', true); 

    if(empty($user_first_name) || empty($user_last_name)) return; 

    // We set the values by defaul worpress ones, before it's saved to DB 
    $customer->set_first_name($user_first_name); 
    $customer->set_last_name($user_last_name); 
} 

Code va dans le fichier function.php de votre thème enfant actif (ou le thème) ou encore dans un fichier de plug-in .

testé et fonctionne dans WooCommerce 3+

+0

Cela a fonctionné avec moi. merci beaucoup –

+0

Est-il possible de stocker des données de facturation dans une nouvelle table de base de données? –

+0

@YahyaEssam, Vous devriez plutôt créer des méta-données personnalisées à la place, ce sera plus facile et plus abordable ... vous ne pensez pas? – LoicTheAztec