2017-10-13 198 views
2

如何在結帳時添加自定義字段Woocommerce使用隱藏類型和默認值?在woocommerce中添加具有默認值的自定義隱藏結賬字段

請檢查下面我的代碼:

function pord_checkout_fields($fields) { 
    $fields['billing']['quickbook'] = array(
     'type' => 'hidden', 
     'label'  => __('Purchase Order Number', 'woocommerce'), 
     'placeholder' => _x('Purchase Order Number', 'placeholder', 'woocommerce'), 
     'required' => false, 
     'class'  => array('form-row-wide'), 
     'clear'  => true 
    ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields','pord_checkout_fields'); 

回答

2

隱藏式不存在woocommerce表單字段默認團購...但是你可以創建它。

  • 第一個函數將創建該隱藏字段類型。
  • 第二屆函數就會將這個隱藏的自定義字段(在這裏設置的值)
  • 第三個功能將按順序編輯頁面

這裏顯示該值是代碼:

// Create hidden checkout field type 
add_filter('woocommerce_form_field_hidden', 'create_checkout_hidden_field_type', 5, 4); 
function create_checkout_hidden_field_type($field, $key, $args, $value){ 
    return '<input type="hidden" name="'.esc_attr($key).'" id="'.esc_attr($args['id']).'" value="'.esc_attr($args['default']).'" />'; 
} 

// Add custom hidden billing checkout field 
add_filter('woocommerce_checkout_fields', 'custom_billing_fields'); 
function custom_billing_fields($fields){ 

    ## HERE set the value (for this hidden checkout field) 
    $value = "The value"; 

    $fields['billing']['billing_quickbook'] = array(
     'type' => 'hidden', 
     'label'  => __('Purchase Order Number', 'woocommerce'), 
     'placeholder' => _x('Purchase Order Number', 'placeholder', 'woocommerce'), 
     'required' => false, 
     'class'  => array('form-row-wide'), 
     'clear'  => true, 
     'default' => $value, // The custom field value 
    ); 
    return $fields; 
} 

// Display the field value on the admin order edit page (after billing address) 
add_action('woocommerce_admin_order_data_after_billing_address', 'display_custom_field_in_admin_order_meta', 10, 1); 
function display_custom_field_in_admin_order_meta($order){ 
    echo '<p><strong>'.__('Quickbook').':</strong> ' . get_post_meta($order->get_id(), '_billing_quickbook', true) . '</p>'; 
} 

該代碼在你的活動子主題(或主題)的function.php文件或任何插件文件中。

用法(檢索值)

從訂單ID $order_id獲得的價值,你將使用(如果需要)

$value = get_post_meta($order_id, '_billing_quickbook', true); 

此代碼已經過測試,可用於WooCommerce 3+。


官方開發者文檔:Customizing checkout fields using actions and filters

0
// Hook in 
add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields'); 

// Our hooked in function - $fields is passed via the filter! 
function custom_override_checkout_fields($fields) { 
    $fields['order']['order_comments']['placeholder'] = 'My new placeholder'; 
    $fields['order']['order_comments']['label'] = 'My new label'; 
    return $fields; 
} 
相關問題