用户名含+符号时get_user_by("slug")查询失效的解决办法
解决get_user_by处理带加号用户slug返回false的问题
问题根源在于um_user_profile_url()返回的URL里,空格会被编码成+,而basename()直接提取的带+的字符串,和WordPress数据库中存储的用户slug格式不匹配——WordPress默认会把用户名称里的空格转成连字符(比如the user name对应的slug是the-user-name),或者原始slug里的空格在URL中被编码成了+,导致直接用提取的字符串查不到用户。
直接用下面的修改代码就能解决:
$userslug = basename(um_user_profile_url()); // 解码URL中的特殊字符,把+还原成空格 $decoded_slug = urldecode($userslug); // 把空格替换成WordPress默认的连字符slug格式 $decoded_slug = str_replace(' ', '-', $decoded_slug); $user = get_user_by("slug", $decoded_slug); var_dump($user);
如果你的系统里用户slug确实是带+的(不是编码后的空格),那只保留urldecode步骤即可,它能处理所有URL编码的特殊字符,确保传入get_user_by的是正确的slug值。
内容的提问来源于stack exchange,提问作者Naomi S
相关产品推荐
相关产品推荐

