将 WooCommerce 城市字段更改为前端和管理中的下拉列表
Change WooCommerce city fields to a dropdown in frontend and admin
我已将城市字段添加为下拉列表,但无法在后台显示它。 https://ibb.co/3rdsQpY
/* city dropdown */
// UPDATE CHECKOUT CITY FIELD
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
add_filter('woocommerce_admin_shipping_fields', 'custom_override_default_address_fields');// manual order
function custom_override_default_address_fields( $address_fields ) {
// Billing City
$address_fields['city']['type'] = 'select';
$address_fields['city']['label'] = __('City', 'custom-domain');
$address_fields['city']['priority'] = '41';
$address_fields['city']['class'] = array('my-field-class form-row-last');
$address_fields['city']['options'] = array(
// '' => __( 'Select unit type' ), /*= this will make empty field*/
'Jeddah' => __('Jeddah', 'custom-domain'),
);
// Sort
ksort($address_fields['city']['options']);
return $address_fields;
}
我尝试在下面添加过滤器,但没有成功。我错过了什么?
add_filter( 'woocommerce_customer_meta_fields', 'custom_override_default_address_fields' );
以下内容会将账单和送货城市字段更改为
的下拉列表
- 结帐城市字段
- 我的帐户编辑地址城市字段
- 管理单一订单页面:编辑账单和发货城市字段
- 管理员用户页面:编辑账单和发货城市字段
代码:
// Custom function that handle city options
function get_city_options() {
$options = array(
// '' => __( 'Select unit type' ), /*= this will make empty field*/
'Jeddah' => __('Jeddah', 'custom-domain'),
);
ksort($options);
return $options;
}
// Checkout and my account (edit) billing and shipping city
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_city_fields' );
function custom_override_default_city_fields( $fields ) {
$fields['city']['type'] = 'select';
$fields['city']['class'] = array('my-field-class form-row-last');
$fields['city']['input_class'] = array('state_select');
$fields['city']['options'] = get_city_options();
$fields['city']['priority'] = '41';
return $fields;
}
// Admin editable single orders billing and shipping city field
add_filter('woocommerce_admin_billing_fields', 'admin_order_pages_city_fields');
add_filter('woocommerce_admin_shipping_fields', 'admin_order_pages_city_fields');
function admin_order_pages_city_fields( $fields ) {
$fields['city']['type'] = 'select';
$fields['city']['options'] = get_city_options();
$fields['city']['class'] = 'short'; // Or 'js_field-country select short' to enable selectWoo (select2).
return $fields;
}
// Admin editable User billing and shipping city
add_filter( 'woocommerce_customer_meta_fields', 'custom_override_user_city_fields' );
function custom_override_user_city_fields( $fields ) {
$fields['billing']['fields']['billing_city']['type'] = $fields['shipping']['fields']['shipping_city']['type'] = 'select';
$fields['billing']['fields']['billing_city']['options'] = $fields['shipping']['fields']['shipping_city']['options'] = get_city_options();
return $fields;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
添加 - 其他账单和送货字段
对于除 WooCommerce 默认地址字段之外的其他账单和送货字段,您可以替换:
// Checkout and my account (edit) billing and shipping city
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_city_fields' );
function custom_override_default_city_fields( $fields ) {
// … …
return $fields;
}
通过以下 2 个挂钩函数:
// For billing custom field (Checkout and my account edit addresses):
add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );
function custom_override_billing_fields( $fields ) {
$fields['billing_custom1'] = array(
'type' => 'text', // chose the field type
'label' => __('Custom label (billing)', 'woocommerce' ),
'class' => array('form-row-wide'), // can be also 'form-row-first' or 'form-row-last'
'required' => false, // Optional
'clear' => true, // Optional
'priority' => 200, // To change the field location increase or decrease this value
);
return $fields;
}
// For shipping custom field (Checkout and my account edit addresses):
add_filter( 'woocommerce_shipping_fields' , 'custom_override_shipping_fields' );
function custom_override_shipping_fields( $fields ) {
$fields['shipping_custom1'] = array(
'type' => 'text', // chose the field type
'label' => __('Custom label (shipping)', 'woocommerce' ),
'class' => array('form-row-wide'), // can be also 'form-row-first' or 'form-row-last'
'required' => false, // Optional
'clear' => true, // Optional
'priority' => 200, // To change the field location increase or decrease this value
);
return $fields;
}
我已将城市字段添加为下拉列表,但无法在后台显示它。 https://ibb.co/3rdsQpY
/* city dropdown */
// UPDATE CHECKOUT CITY FIELD
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields' );
add_filter('woocommerce_admin_shipping_fields', 'custom_override_default_address_fields');// manual order
function custom_override_default_address_fields( $address_fields ) {
// Billing City
$address_fields['city']['type'] = 'select';
$address_fields['city']['label'] = __('City', 'custom-domain');
$address_fields['city']['priority'] = '41';
$address_fields['city']['class'] = array('my-field-class form-row-last');
$address_fields['city']['options'] = array(
// '' => __( 'Select unit type' ), /*= this will make empty field*/
'Jeddah' => __('Jeddah', 'custom-domain'),
);
// Sort
ksort($address_fields['city']['options']);
return $address_fields;
}
我尝试在下面添加过滤器,但没有成功。我错过了什么?
add_filter( 'woocommerce_customer_meta_fields', 'custom_override_default_address_fields' );
以下内容会将账单和送货城市字段更改为
的下拉列表- 结帐城市字段
- 我的帐户编辑地址城市字段
- 管理单一订单页面:编辑账单和发货城市字段
- 管理员用户页面:编辑账单和发货城市字段
代码:
// Custom function that handle city options
function get_city_options() {
$options = array(
// '' => __( 'Select unit type' ), /*= this will make empty field*/
'Jeddah' => __('Jeddah', 'custom-domain'),
);
ksort($options);
return $options;
}
// Checkout and my account (edit) billing and shipping city
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_city_fields' );
function custom_override_default_city_fields( $fields ) {
$fields['city']['type'] = 'select';
$fields['city']['class'] = array('my-field-class form-row-last');
$fields['city']['input_class'] = array('state_select');
$fields['city']['options'] = get_city_options();
$fields['city']['priority'] = '41';
return $fields;
}
// Admin editable single orders billing and shipping city field
add_filter('woocommerce_admin_billing_fields', 'admin_order_pages_city_fields');
add_filter('woocommerce_admin_shipping_fields', 'admin_order_pages_city_fields');
function admin_order_pages_city_fields( $fields ) {
$fields['city']['type'] = 'select';
$fields['city']['options'] = get_city_options();
$fields['city']['class'] = 'short'; // Or 'js_field-country select short' to enable selectWoo (select2).
return $fields;
}
// Admin editable User billing and shipping city
add_filter( 'woocommerce_customer_meta_fields', 'custom_override_user_city_fields' );
function custom_override_user_city_fields( $fields ) {
$fields['billing']['fields']['billing_city']['type'] = $fields['shipping']['fields']['shipping_city']['type'] = 'select';
$fields['billing']['fields']['billing_city']['options'] = $fields['shipping']['fields']['shipping_city']['options'] = get_city_options();
return $fields;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
添加 - 其他账单和送货字段
对于除 WooCommerce 默认地址字段之外的其他账单和送货字段,您可以替换:
// Checkout and my account (edit) billing and shipping city
add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_city_fields' );
function custom_override_default_city_fields( $fields ) {
// … …
return $fields;
}
通过以下 2 个挂钩函数:
// For billing custom field (Checkout and my account edit addresses):
add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );
function custom_override_billing_fields( $fields ) {
$fields['billing_custom1'] = array(
'type' => 'text', // chose the field type
'label' => __('Custom label (billing)', 'woocommerce' ),
'class' => array('form-row-wide'), // can be also 'form-row-first' or 'form-row-last'
'required' => false, // Optional
'clear' => true, // Optional
'priority' => 200, // To change the field location increase or decrease this value
);
return $fields;
}
// For shipping custom field (Checkout and my account edit addresses):
add_filter( 'woocommerce_shipping_fields' , 'custom_override_shipping_fields' );
function custom_override_shipping_fields( $fields ) {
$fields['shipping_custom1'] = array(
'type' => 'text', // chose the field type
'label' => __('Custom label (shipping)', 'woocommerce' ),
'class' => array('form-row-wide'), // can be also 'form-row-first' or 'form-row-last'
'required' => false, // Optional
'clear' => true, // Optional
'priority' => 200, // To change the field location increase or decrease this value
);
return $fields;
}