所有 WooCommerce 结帐字段的自定义占位符
Custom placeholder for all WooCommerce checkout fields
我正在尝试向我的 WooCommerce 结帐字段添加一个占位符,它对每个字段都非常有效 除了 phone 和电子邮件 字段。
这是我使用的代码:
add_filter('woocommerce_default_address_fields', 'override_address_fields');
function override_address_fields( $address_fields ) {
$address_fields['first_name']['placeholder'] = 'Fornavn';
$address_fields['last_name']['placeholder'] = 'Efternavn';
$address_fields['address_1']['placeholder'] = 'Adresse';
$address_fields['state']['placeholder'] = 'Stat';
$address_fields['postcode']['placeholder'] = 'Postnummer';
$address_fields['city']['placeholder'] = 'By';
$address_fields['phone']['placeholder'] = 'Telefon';
$address_fields['email']['placeholder'] = 'Email';
return $address_fields;
}
我哪里错了?为什么 phone 和电子邮件没有给出任何结果?
我已经使用我的浏览器开发工具检查器从这两个字段中获取了 ID。
编辑:
我也试过这个建议的代码:
add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
$checkout_fields['first_name']['placeholder'] = 'Fornavn';
$checkout_fields['last_name']['placeholder'] = 'Efternavn';
$checkout_fields['address_1']['placeholder'] = 'Adresse';
$checkout_fields['state']['placeholder'] = 'Stat';
$checkout_fields['postcode']['placeholder'] = 'Postnummer';
$checkout_fields['city']['placeholder'] = 'By';
$checkout_fields['phone']['placeholder'] = 'Telefon';
$checkout_fields['email']['placeholder'] = 'Email';
return $checkout_fields;
}
还有这个:
add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
$checkout_fields['billing_first_name']['placeholder'] = 'Fornavn';
$checkout_fields['billing_last_name']['placeholder'] = 'Efternavn';
$checkout_fields['billing_address_1']['placeholder'] = 'Adresse';
$checkout_fields['billing_state']['placeholder'] = 'Stat';
$checkout_fields['billing_postcode']['placeholder'] = 'Postnummer';
$checkout_fields['billing_city']['placeholder'] = 'By';
$checkout_fields['billing_phone']['placeholder'] = 'Telefon';
$checkout_fields['billing_email']['placeholder'] = 'Email';
return $checkout_fields;
}
但是没用。
查看 WooCommerce documentation 您可能想尝试使用 woocommerce_checkout_fields
过滤器而不是 woocommerce_default_address_fields
似乎更合乎逻辑,因为上面的字段并不都是地址相关的,并且该钩子派生自 class-wc-countries.php
。
另外,请注意字段名称根据页面的上下文而有所不同,例如,帐单页面字段的名称如下:
- billing_first_name
- billing_last_name
- billing_email
- billing_phone
希望对您有所帮助!祝你好运。
查看official docs,你会看到没有 'phone'
和'email'
使用默认地址的关键字段woocommerce_default_address_fields
过滤挂钩。
接受的字段键是:
country
、first_name
、last_name
、company
、address_1
、address_2
、city
、state
、postcode
.
这就是为什么您可以使用 woocommerce_default_address_fields
进行更改的原因
Email 和 phone 是 billing 字段,它们可通过 woocommerce_checkout_fields
过滤器挂钩使用。它们被命名为(参见文档)'billing_phone'
和 'billing_phone'
…
覆盖它们的正确方法是:
add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
function override_billing_checkout_fields( $fields ) {
$fields['billing']['billing_phone']['placeholder'] = 'Telefon';
$fields['billing']['billing_email']['placeholder'] = 'Email';
return $fields;
}
对于其他字段(账单和运费):
add_filter('woocommerce_default_address_fields', 'override_default_address_checkout_fields', 20, 1);
function override_default_address_checkout_fields( $address_fields ) {
$address_fields['first_name']['placeholder'] = 'Fornavn';
$address_fields['last_name']['placeholder'] = 'Efternavn';
$address_fields['address_1']['placeholder'] = 'Adresse';
$address_fields['state']['placeholder'] = 'Stat';
$address_fields['postcode']['placeholder'] = 'Postnummer';
$address_fields['city']['placeholder'] = 'By';
return $address_fields;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
所有代码都在 Woocommerce 3+ 上测试并且有效。
参考:Customizing checkout fields using actions and filters
对于登录表单字段:Customize WooCommerce login form user fields
根据官方文档 https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/
这里有更新的代码:
add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
function override_billing_checkout_fields( $fields ) {
$fields['billing']['billing_first_name']['placeholder'] = 'Prénom';
$fields['billing']['billing_last_name']['placeholder'] = 'Nom';
$fields['billing']['billing_company']['placeholder'] = 'Nom de la société (optionnel)';
$fields['billing']['billing_postcode']['placeholder'] = 'Code postal';
$fields['billing']['billing_phone']['placeholder'] = 'Téléphone';
$fields['billing']['billing_city']['placeholder'] = 'Ville';
$fields['shipping']['shipping_first_name']['placeholder'] = 'Prénom';
$fields['shipping']['shipping_last_name']['placeholder'] = 'Nom';
$fields['shipping']['shipping_company']['placeholder'] = 'Nom de la société (optionnel)';
$fields['shipping']['shipping_postcode']['placeholder'] = 'Code postal';
$fields['shipping']['shipping_phone']['placeholder'] = 'Téléphone';
$fields['shipping']['shipping_city']['placeholder'] = 'Ville';
return $fields;
}
结果:
我正在尝试向我的 WooCommerce 结帐字段添加一个占位符,它对每个字段都非常有效 除了 phone 和电子邮件 字段。
这是我使用的代码:
add_filter('woocommerce_default_address_fields', 'override_address_fields');
function override_address_fields( $address_fields ) {
$address_fields['first_name']['placeholder'] = 'Fornavn';
$address_fields['last_name']['placeholder'] = 'Efternavn';
$address_fields['address_1']['placeholder'] = 'Adresse';
$address_fields['state']['placeholder'] = 'Stat';
$address_fields['postcode']['placeholder'] = 'Postnummer';
$address_fields['city']['placeholder'] = 'By';
$address_fields['phone']['placeholder'] = 'Telefon';
$address_fields['email']['placeholder'] = 'Email';
return $address_fields;
}
我哪里错了?为什么 phone 和电子邮件没有给出任何结果?
我已经使用我的浏览器开发工具检查器从这两个字段中获取了 ID。
编辑:
我也试过这个建议的代码:
add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
$checkout_fields['first_name']['placeholder'] = 'Fornavn';
$checkout_fields['last_name']['placeholder'] = 'Efternavn';
$checkout_fields['address_1']['placeholder'] = 'Adresse';
$checkout_fields['state']['placeholder'] = 'Stat';
$checkout_fields['postcode']['placeholder'] = 'Postnummer';
$checkout_fields['city']['placeholder'] = 'By';
$checkout_fields['phone']['placeholder'] = 'Telefon';
$checkout_fields['email']['placeholder'] = 'Email';
return $checkout_fields;
}
还有这个:
add_filter('woocommerce_checkout_fields', 'override_checkout_fields');
function override_checkout_fields( $checkout_fields ) {
$checkout_fields['billing_first_name']['placeholder'] = 'Fornavn';
$checkout_fields['billing_last_name']['placeholder'] = 'Efternavn';
$checkout_fields['billing_address_1']['placeholder'] = 'Adresse';
$checkout_fields['billing_state']['placeholder'] = 'Stat';
$checkout_fields['billing_postcode']['placeholder'] = 'Postnummer';
$checkout_fields['billing_city']['placeholder'] = 'By';
$checkout_fields['billing_phone']['placeholder'] = 'Telefon';
$checkout_fields['billing_email']['placeholder'] = 'Email';
return $checkout_fields;
}
但是没用。
查看 WooCommerce documentation 您可能想尝试使用 woocommerce_checkout_fields
过滤器而不是 woocommerce_default_address_fields
似乎更合乎逻辑,因为上面的字段并不都是地址相关的,并且该钩子派生自 class-wc-countries.php
。
另外,请注意字段名称根据页面的上下文而有所不同,例如,帐单页面字段的名称如下:
- billing_first_name
- billing_last_name
- billing_email
- billing_phone
希望对您有所帮助!祝你好运。
查看official docs,你会看到没有 'phone'
和'email'
使用默认地址的关键字段woocommerce_default_address_fields
过滤挂钩。
接受的字段键是:
country
、first_name
、last_name
、company
、address_1
、address_2
、city
、state
、postcode
.
这就是为什么您可以使用 woocommerce_default_address_fields
Email 和 phone 是 billing 字段,它们可通过 woocommerce_checkout_fields
过滤器挂钩使用。它们被命名为(参见文档)'billing_phone'
和 'billing_phone'
…
覆盖它们的正确方法是:
add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
function override_billing_checkout_fields( $fields ) {
$fields['billing']['billing_phone']['placeholder'] = 'Telefon';
$fields['billing']['billing_email']['placeholder'] = 'Email';
return $fields;
}
对于其他字段(账单和运费):
add_filter('woocommerce_default_address_fields', 'override_default_address_checkout_fields', 20, 1);
function override_default_address_checkout_fields( $address_fields ) {
$address_fields['first_name']['placeholder'] = 'Fornavn';
$address_fields['last_name']['placeholder'] = 'Efternavn';
$address_fields['address_1']['placeholder'] = 'Adresse';
$address_fields['state']['placeholder'] = 'Stat';
$address_fields['postcode']['placeholder'] = 'Postnummer';
$address_fields['city']['placeholder'] = 'By';
return $address_fields;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
所有代码都在 Woocommerce 3+ 上测试并且有效。
参考:Customizing checkout fields using actions and filters
对于登录表单字段:Customize WooCommerce login form user fields
根据官方文档 https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/ 这里有更新的代码:
add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
function override_billing_checkout_fields( $fields ) {
$fields['billing']['billing_first_name']['placeholder'] = 'Prénom';
$fields['billing']['billing_last_name']['placeholder'] = 'Nom';
$fields['billing']['billing_company']['placeholder'] = 'Nom de la société (optionnel)';
$fields['billing']['billing_postcode']['placeholder'] = 'Code postal';
$fields['billing']['billing_phone']['placeholder'] = 'Téléphone';
$fields['billing']['billing_city']['placeholder'] = 'Ville';
$fields['shipping']['shipping_first_name']['placeholder'] = 'Prénom';
$fields['shipping']['shipping_last_name']['placeholder'] = 'Nom';
$fields['shipping']['shipping_company']['placeholder'] = 'Nom de la société (optionnel)';
$fields['shipping']['shipping_postcode']['placeholder'] = 'Code postal';
$fields['shipping']['shipping_phone']['placeholder'] = 'Téléphone';
$fields['shipping']['shipping_city']['placeholder'] = 'Ville';
return $fields;
}
结果: