我有一个带有登录系统的wordpress安装。用户名是公司名称,其中可能包含丹麦字符Å,Æ,Ø。
登录时,这些字符不会引起问题。但是,当用户登录时,我尝试获取当前登录的用户时,不会显示当前的user_login和角色。这以前曾起作用,最近已停止工作。我正在使用以下代码:
<?php
function visbruger(){
$current_user = wp_get_current_user();
$BrugerRolle = "";
$Rolle = implode(', ', $current_user->roles);
if($Rolle == 'Light'){
$BrugerRolle = "CE- mærkning";
}
else if($Rolle == 'Normal-1'){
$BrugerRolle = "FPC Light";
}
else if($Rolle == 'Normal-2'){
$BrugerRolle = "FPC Normal";
}
else{
$BrugerRolle = implode(', ', $current_user->roles);
}
echo 'Logget ind som: ' . $current_user->user_login . " "." | "." ";
echo 'Abonnement: ' . $BrugerRolle . "\n";
}
add_shortcode('brugervis', 'visbruger');
?>
此函数应返回如下内容:
Logget ind som: Company name | Abonnement: FPC Normal
但是在用户名中使用æ,ø,å时,它将返回:
Logget ind som: | Abonnement:
不能像wp_get_current_user()
那样使用户名中包含特殊字符的用户。我该如何解决这个问题?提前致谢。
答案 0 :(得分:0)
user_login
用sanitize_user()
清除。这意味着这些特殊字符将被删除。清除后,查看user_login
中允许使用哪些字符。 https://developer.wordpress.org/reference/functions/sanitize_user/
您可以显示$current_user->user_login
而不是在功能中显示$current_user->display_name
,以便正确显示此类特殊字符。