下面的代码应该适合您,但我不能保证这一点,因为您的表单定制得太多(而且很糟糕)。我已经在非定制注册表上进行了测试,效果很好。
function cyhorge_check_fields( $errors, $sanitized_user_login, $user_email ) {
if ( preg_match(\'/(CyhorgeVH)/\', $sanitized_user_login ) ) {
$errors->add( \'username_error\', __( \'<strong>ERROR</strong>: User contains CyhorgeVH string.\', \'my_textdomain\' ) );
}
return $errors;
}
add_filter( \'registration_errors\', \'cyhorge_check_fields\', 10, 3 );
SOURCE
EDIT: 另一种可能的解决方案:
function prevent_cyhorge_user( $user_login, $user_email, $errors ) {
if ( strpos( $user_login, \'CyhorgeVH\' ) ) {
$errors->add( \'username_error\', __( \'<strong>ERROR</strong>: User contains CyhorgeVH string.\', \'my_textdomain\' ) );
}
}
add_action( \'register_post\', \'prevent_cyhorge_user\', 10, 3 );
请注意,第二个函数正在使用
strpos 而不是
preg_match 可能快一点,但是
preg_match 如果需要,提供更大的灵活性。
两者都应该从任何一个主题functions.php 或者作为插件。