在 woocommerce 中添加具有默认值的自定义隐藏结帐字段
Add custom hidden checkout field with a default value in 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');
// 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;
}
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 (RETRIEVING THE VALUE):
To get the value from the Order ID $order_id
, you will use (if needed):
$value = get_post_meta( $order_id, '_billing_quickbook', true );
此代码已经过测试,可在 WooCommerce 3+ 中运行。
官方开发者文档:Customizing checkout fields using actions and filters
如何在结帐 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');
// 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;
}
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 (RETRIEVING THE VALUE):
To get the value from the Order ID
$order_id
, you will use (if needed):$value = get_post_meta( $order_id, '_billing_quickbook', true );
此代码已经过测试,可在 WooCommerce 3+ 中运行。
官方开发者文档:Customizing checkout fields using actions and filters