php - 如何以编程方式在 wordpress 中插入用户、希伯来语用户名?
问题描述
我正在尝试从我的自定义网站插入用户,这是不同的语言。用户已使用英语或希伯来语在该网站上注册。
使用函数 wp_insert_user
$usernicename = $userpost['first_name'] . $userpost['last_name'];
$user_login_name = $userpost['last_name'].$userpost['first_name'];
$user_password = "xyz@123";
$userdata = array(
'user_pass' => $userpost['password'],
'user_login' => $user_login_name,
'user_nicename' => $usernicename,
'user_email' => $userpost['email'],
'first_name' => $userpost['first_name'],
'last_name' => $userpost['last_name'],
'user_registered' => $userpost['registration'],
'role' => 'subscriber',
);
$id = wp_insert_user( $userdata ) ;
所有名称为英语的用户都已成功插入,但使用希伯来语/不同语言的用户会出错
object(WP_Error)#11230 (2) {
["errors"]=>
array(1) {
["empty_user_login"]=>
array(1) {
[0]=>
string(46) "Cannot create a user with an empty login name."
}
}
["error_data"]=>
array(0) {
}
}
我已经从管理员设置更改了站点语言,但这也不起作用。
解决方案
我找到了解决我的问题的方法,这主要是因为用户名的清理。希伯来字符被 santizied 并返回 null,这就是它给出错误空登录名的原因。
通过使用我找到的代码或 wordpress 插件解决了这个问题
1. wordpress 特殊字符 2.希伯来语用户名
或者您可以使用下面的代码并将其粘贴到您的 function.php 文件中,它将覆盖用户名过滤功能。
add_filter ('sanitize_user', 'hu_sanitize_user', 10, 3);
//Overrides the Wordpress sanitize_user filter to allow hebrew letters and english letters only
function hu_sanitize_user ($username, $raw_username, $strict)
{
//Strip HTML Tags
$username = wp_strip_all_tags ($raw_username);
//Remove Accents
$username = remove_accents ($username);
//Kill octets
$username = preg_replace ('|%([a-fA-F0-9][a-fA-F0-9])|', '', $username);
//Kill entities
$username = preg_replace ('/&.+?;/', '', $username);
if ($strict){
//Replace
$username = preg_replace( '[\p{Hebrew}a-zA-Z]', '', $username );
}
//Remove Whitespaces
$username = trim ($username);
// Consolidate contiguous Whitespaces
$username = preg_replace ('|\s+|', ' ', $username);
return $username;
}
上述两种解决方案(代码/插件)都只允许您在用户名中输入 8 个希伯来语字符。这是因为 user_login 列被声明为 varchar(60) 并且与英文字符相比,希伯来字符占用更多字节,因此您必须根据需要进行更改。
推荐阅读
- dialogflow-es - 可以保存整个用户响应对话流吗?
- kubernetes - Kubernetes pod 无法从容器注册表 (gcp) 中提取图像
- laravel - Laravel 5.4 使用请求并使用 Illuminate\Http\Request;不能同时工作
- python - 使用 Cython 调用带有 args 的 Python 函数
- swift - 无法在 Xcode Playgrounds 中创建文件夹?
- android - 使用带有身份验证的 webview 和代理
- x86 - x86 VMCS 字段“ENCLV-Exiting Bitmap”的编码
- python - 有没有办法遍历python中的输入文件列表?
- javascript - 动态 require 语句在 vuejs 中不起作用
- javascript - 使用 AJAX 加载代码时添加 rel="noopener"