使用wp_get_current_user()带有特殊字符的Wordpress用户名不返回任何内容

时间:2019-06-03 15:53:17

标签: php wordpress

我有一个带有登录系统的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()那样使用户名中包含特殊字符的用户。我该如何解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:0)

插入用户时,

user_loginsanitize_user()清除。这意味着这些特殊字符将被删除。清除后,查看user_login中允许使用哪些字符。 https://developer.wordpress.org/reference/functions/sanitize_user/

您可以显示$current_user->user_login而不是在功能中显示$current_user->display_name,以便正确显示此类特殊字符。