2017-10-06 8 views
1

J'ai un similaire comme dans here: Je ne comprends pas pourquoi la valeur de ce champ personnalisé n'est pas enregistrée. Voici mon code:Afficher une valeur de champ personnalisé dans les commandes Woocommerce éditer afficher

add_filter('woocommerce_checkout_fields' , 'altri_campi'); 

function altri_campi($fields) { 
$fields['billing']['codice_fiscale'] = array(
     'class'  => array('form-row-wide'), 
     'label'  => __('Codice Fiscale', 'woocommerce'), 
     'placeholder' => _x('Scrivere anche il Codice Fiscale', 'placeholder', 'woocommerce'), 
     'required' => true, 
     'class'  => array('form-row-wide') 
    ); 

    return $fields; 

}  

// like LoizTheAztec above 
    add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta', 10, 1); 
    function my_custom_checkout_field_update_order_meta($order_id) { 
     if (! empty($_POST['codice_fiscale'])) { 
      update_post_meta($order_id, 'Codice Fiscale', sanitize_text_field($_POST['codice_fiscale'])); 
     } 
    } 

    // then I'm expecting that custom field value will be saved somehow, but won't 

    add_action('woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1); 

    function my_custom_checkout_field_display_admin_order_meta($order){ 
     echo '<p><strong>'.__('Codice Fiscale', 'woocommerce').':</strong> ' . get_post_meta($order->get_id(), '_codice_fiscale', true) . '</p>'; 
    } 

champ Meta est correctement enregistré et imprimé, mais je ne peux pas ajouter la valeur de champ personnalisé dans l'affichage des données de commande. Qu'est-ce que je fais mal et comment afficher cette valeur de champ personnalisé dans la vue d'édition de commande?

Sinon, le texte que je m'attends à trouver après les données de facturation et d'expédition du client est nul, puisque je n'ai lu que la partie html du dernier extrait.

Répondre

1

est ici le bon code commenté et expliqué:

// Creating and displaying the custom checkout field in checkout page 
add_filter('woocommerce_checkout_fields' , 'altri_campi'); 
function altri_campi($fields) { 
    $fields['billing']['codice_fiscale'] = array(
     'class'  => array('form-row-wide'), 
     'label'  => __('Codice Fiscale', 'woocommerce'), 
     'placeholder' => _x('Scrivere anche il Codice Fiscale', 'placeholder', 'woocommerce'), 
     'required' => true, 
     'class'  => array('form-row-wide') 
    ); 
    return $fields; 
} 

// Saving the custom checkout field value in the order meta data 
add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta', 10, 1); 
function my_custom_checkout_field_update_order_meta($order_id) { 
    if (! empty($_POST['codice_fiscale'])){ 
     update_post_meta($order_id, 'codice_fiscale', sanitize_text_field($_POST['codice_fiscale'])); 

     // get the customer ID 
     $customer_id = get_post_meta($order_id, '_customer_user', true); 

     // Update customer user data 
     update_user_meta($customer_id, 'codice_fiscale', true); 
    } 
} 

// Displaying the custom checkout field value in the order edit page (backend) 
add_action('woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1); 
function custom_checkout_field_display_admin_order_meta($order){ 
    $codice_fiscale = get_post_meta($order->get_id(), 'codice_fiscale', true); 
    if(! empty($codice_fiscale)) 
     echo '<p><strong>'.__('Codice Fiscale', 'woocommerce').':</strong> ' . $codice_fiscale . '</p>'; 
} 

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. Vous obtiendrez dans la page modifier l'ordre de back-end quelque chose comme (ci-dessous les adresses):

enter image description here

+0

Merci pour votre aide! Juste deux avis: Je devais me débarrasser du symbole de soulignement supplémentaire "_" en utilisant both dans update_post_meta ($ order_id, '_codice_fiscale', ...) et dans get_post_meta ($ order-> get_id(), '_codice_fiscale' ,. ..) sinon les données ne seront pas sauvegardées correctement parmi les metas et ne seront pas imprimées dans les détails de la commande. – alemarengo

+0

En fait, vous devriez éditer votre réponse en se débarrassant du symbole de soulignement supplémentaire, sinon je ne peux pas confirmer que votre réponse a fonctionné pour moi à 100%. :) – alemarengo

+0

@alemarengo Ok, j'ai mis à jour ma réponse :) – LoicTheAztec