我需要为使用WooCommerce的网站中的用户名设置最小长度。
在“标准”WordPress安装中(我的意思是没有WooCommerce),我可以使用如下代码片段:
function my_registration_errors( $errors, $sanitized_user_login, $user_email )
{
if ( strlen( $sanitized_user_login ) < 5 ) {
$errors->add( \'username_too_short\', __( \'<strong>ERROR</strong>: Username must be at least 5 characters.\' ) );
}
return $errors;
}
add_filter( \'registration_errors\', \'my_registration_errors\', 10, 3 );
不幸的是,它不起作用(我只是用一个假注册进行了测试),因为
WooCommerce has it\'s own register form and hooks.
我找到了a palliative solution 建议编辑表单登录。向输入字段添加模式属性的php文件<input pattern=".{3,}" required title="3 characters minimum">
, 但我不想遵循此过程,我宁愿编辑我的函数。而不是php。
我找到了一个名为"Network Username Restrictions Override" 但“它已经两年多没有更新了”,它指的是一个网络,我认为它不适合我的情况。
我也试着find another plugin 在WordPress插件目录中,但我什么也没找到。
有什么建议吗?
最合适的回答,由SO网友:Marco Panichi 整理而成
好的,我找到了解决办法。
因为,正如我所说,WooCommerce首先有它自己的钩子I\'ve searched for a WooCommerce hook about registration.
我发现了一个与WordPress使用的钩子非常相似的钩子:woocommerce_registration_errors. 显然,它的工作原理是一样的。
然后我简单地用WooCommerce钩子替换了WordPress钩子。这里是您必须插入的最后一个代码段in your functions.php file:
add_filter( \'woocommerce_registration_errors\', \'my_registration_errors\', 10, 3 );
function my_registration_errors( $errors, $sanitized_user_login, $user_email )
{
if ( strlen( $sanitized_user_login ) < 5 ) {
$errors->add( \'username_too_short\', __( \'<strong>ERROR</strong>: Username must be at least 5 characters.\' ) );
}
return $errors;
}