2 回答
TA贡献1777条经验 获得超10个赞
我找到了解决方案 - 还有另一个钩子pre_user_display_name可以完全满足我的需要,使用与我已有的函数类似的函数pre_user_login
add_filter( 'pre_user_display_name' , 'cfw_set_display_name_to_forename' );
function cfw_set_display_name_to_forename( $display_name ) {
if( isset($_POST['billing_first_name'] ) ) {
$display_name = $_POST['billing_first_name'];
}
if( isset($_POST['first_name'] ) ) {
$display_name = $_POST['first_name'];
}
return $display_name;
}
经过测试并有效!
TA贡献1821条经验 获得超4个赞
我找到了解决方案 - 还有另一个钩子pre_user_display_name可以完全满足我的需要,使用与我已有的函数类似的函数pre_user_login
add_filter( 'pre_user_display_name' , 'cfw_set_display_name_to_forename' );
function cfw_set_display_name_to_forename( $display_name ) {
if( isset($_POST['billing_first_name'] ) ) {
$display_name = $_POST['billing_first_name'];
}
if( isset($_POST['first_name'] ) ) {
$display_name = $_POST['first_name'];
}
return $display_name;
}
经过测试并有效!
以下是该函数的细分set_display_name_to_forename
:
if ( isset( $_POST['billing_first_name'] ) ) { ... }
此条件检查 $_POST 数组中是否存在 billing_first_name 字段。此字段通常在 WooCommerce 注册表中用于收集用户的名字。if ( isset( $_POST['first_name'] ) ) { ... }
如果该billing_first_name
字段不存在,则此条件检查该first_name
字段是否存在于$_POST
数组中。标准 WordPress 注册表中使用该first_name
字段来收集用户的名字。在每个条件内,代码都会更新 $display_name 变量,
sanitize_text_field()
以确保清除任何潜在有害的输入。它根据存在的字段将显示名称设置为billing_first_name
或的值。first_name
如果这两个字段都不存在,则默认显示名称保持不变。
最后,函数返回修改后的或原始的显示名称。
总体而言,此代码利用 WordPress 过滤系统在保存显示名称之前拦截显示名称,并动态地将其替换为用户在注册表中提供的名字。这是一种个性化显示名称并为您的 WooCommerce 注册过程创建更加用户友好的体验的巧妙方法。
- 2 回答
- 0 关注
- 119 浏览
添加回答
举报