2017-10-06 15 views
1

私はhereのようなものがあります:このカスタムフィールドの値が保存されない理由はわかりません。ここに私のコードは次のとおりです。Woocommerceオーダーの編集ビューでカスタムフィールド値を表示

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>'; 
    } 

メタフィールドが正しく保存と印刷されたが、私は、注文データビューにカスタムフィールドの値を追加することはできませんされています。

私は間違って何をしていますか、このカスタムフィールド値をオーダー編集ビューに表示する方法はありますか?

それ以外の場合は、最新のスニペットのhtml部分のみを読み込んでいるため、お客様の請求データと出荷データが無効になっていると思われるテキストは無効です。ここで

答えて

1

正しいコメントとコードを説明します

// 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>'; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

テスト済みで動作します。あなたは、バックエンドの順編集ページで(アドレス下記)のようなものを取得します。あなたの助けを

enter image description here

+0

感謝を!ちょうど2つの通知:私は、update_post_meta($ order_id、 '_codice_fiscale'、...)とget_post_meta($ order-> get_id()、_codice_fiscale ')の両方を使用するときに、追加の "_"アンダースコアを取り除かなければなりませんでした。 ..)そうでなければ、データはメタ間に正しく保存されず、注文の詳細には印刷されません。 – alemarengo

+0

実際には、アンダースコアを削除して回答を編集する必要があります。そうしないと、あなたの回答が私のために100%働いたことを確認できません。 :) – alemarengo

+0

@alemarengo Ok私は私の答えを更新しました: – LoicTheAztec

関連する問題