在Woocommerce订单中显示一个自定义字段值编辑视图

在Woocommerce订单中显示一个自定义字段值编辑视图

问题描述:

我有一个和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部分。

这里是正确的注释和解释代码:

// 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

感谢您的帮助!只有两个注意事项:在update_post_meta($ order_id,'_codice_fiscale',...)和get_post_meta($ order-> get_id(),'_codice_fiscale')中使用这两个符号时,我必须删除附加的“_”下划线符号。 ..)否则数据将不会正确保存在元数据中,并且不会在订单明细中打印。 – alemarengo

+0

事实上,你应该通过摆脱额外的下划线符号来编辑你的答案,否则我无法确认你的答案对我有效100%。 :) – alemarengo

+0

@alemarengo好吧,我已经更新了我的答案:) – LoicTheAztec