许多 WordPress 都是开放注册的,又有不少的站点是在做交易站点,可以进行购买实物在线交易的,在线交易的站点往往是禁止同一个帐号多人使用的,而在 WordPress 中是没有限制的,也就是说一个帐号可以进行共享,然后多人同时重复登录的,这给交易带来了困难,也带来一定的安全问题。
而对于如何禁止同一个注册帐号同时重复登录的问题,有简单的插件来实现,如:Prevent Concurrent Logins 或 Wp Single Login,这 2 个插件都不需多余设置,任选其一安装启用即可。
当然,不想用插件的话,也可以通过在 functions.php 中添加如下代码(来自上面的插件 Prevent Concurrent Logins)的方法来解决这个问题:
/** * Wordpress 禁止多个人登录同一用户帐号 */ function pcl_user_has_concurrent_sessions() { return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 ); } //用户当前会话数组 function pcl_get_current_session() { $sessions = WP_Session_Tokens::get_instance( get_current_user_id() ); return $sessions->get( wp_get_session_token() ); } //如果用户会话更新则销毁其他会话 function pcl_disallow_account_sharing() { if ( ! pcl_user_has_concurrent_sessions() ) { return; } $newest = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) ); $session = pcl_get_current_session(); if ( $session['login'] === $newest ) { wp_destroy_other_sessions(); } else { wp_destroy_current_session(); } } add_action( 'init', 'pcl_disallow_account_sharing' );