WordPress开发用户中心常用函数

1,701次阅读
没有评论

前言


我们在使用 WordPress 过程中,网站有需求开发前端用户中心时候,需要调取用户的信息函数,在开发过程中加入 css 即可完美展示。网上很多都是插件,而且是付费的,其实折腾的在于过程,不如开始动手,慢慢的一个个问题解决,等开发完才会发现其实没有想象中的那么难,不要做行动的“矮人”。

WordPress 开发用户中心常用函数

常用函数


<?php global $current_user;get_currentuserinfo();echo $current_user-&amp;amp;gt;user_email . "\n";?> // 调取用户注册时选择的邮箱
<?php global $current_user;get_currentuserinfo();echo $current_user-&amp;amp;gt;user_login . "\n";?> // 调取用户昵称
<?php if (is_user_logged_in() ) {user_registered_date();} ?> // 调取用户注册时间
<?php global $user_ID;echo get_comments('count=true&amp;amp;amp;user_id='.$user_ID);?> // 调取用户在本站评论数量

WordPress 支持中文用户名


// 让 wordpress 支持中文用户名
function ludou_sanitize_user ($username, $raw_username, $strict) {$username = wp_strip_all_tags( $raw_username);
$username = remove_accents($username);
// Kill octets
$username = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
$username = preg_replace('/&.+?;/', '', $username); // Kill entities
// 网上很多教程都是直接将 $strict 赋值 false,// 这样会绕过字符串检查,留下隐患
if ($strict) {$username = preg_replace ('|[^a-z\p{Han}0-9 _.\-@]|iu', '', $username);
}
$username = trim($username);
// Consolidate contiguous whitespace
$username = preg_replace('|\s+|', ' ', $username);
return $username;
}
add_filter ('sanitize_user', 'ludou_sanitize_user', 10, 3);

非管理员不允许进入后台


// 非管理员不允许进入后台
if (is_admin() && (!defined( 'DOING_AJAX') || !DOING_AJAX ) ) {$current_user = wp_get_current_user();
if($current_user->roles[0] == get_option('default_role')) {wp_safe_redirect( home_url() );
exit();}
}

WordPress 支持 Email 登录


// 修改 WordPress 用户名过滤机制,通过 Email 获取用户名
function ludou_allow_email_login($username, $raw_username, $strict) {if (filter_var($raw_username, FILTER_VALIDATE_EMAIL)) {$user_data = get_user_by('email', $raw_username);
if (empty($user_data))
wp_die(__('<strong>ERROR</strong>: There is no user registered with that email address.'), '用户名不正确');
else
return $user_data->user_login;
}
else {return $username;}
}
if (strpos($_SERVER['REQUEST_URI'], '?action=register') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=lostpassword') === FALSE && strpos($_SERVER['REQUEST_URI'], '?action=rp') === FALSE ) {add_filter('sanitize_user', 'ludou_allow_email_login', 10, 3);
}

使用方法

可通过页面写个自定义模板,css 如果不会写可以借鉴一下其他网站的样式,如采用需通过作者同意,css 调用起来把上面相应的函数进行替换,即可完美展示。

 
评论(没有评论)
载入中...