在woocommerce中添加带有默认值的自定义隐藏结帐字段

时间:2017-10-13 10:13:54

标签: php wordpress woocommerce checkout custom-fields

如何在结帐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 个答案:

答案 0 :(得分:3)

隐藏类型不存在购买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文件或任何插件文件中。

  

USAGE (检索价值)

     

要从订单ID $order_id获取值,您将使用(如果需要)

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

此代码经过测试,适用于WooCommerce 3 +。

官方开发人员文档:Customizing checkout fields using actions and filters

答案 1 :(得分: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;
}