前言:
在众多的 WordPress 站点中,开放注册已成为一种常态。然而,许多站点还涉及到在线交易,如购买实物商品等。这些在线交易站点通常禁止同一个账号被多人使用,以确保交易的安全性和公平性。然而,在 WordPress 默认设置中,并没有对账号共享和多人同时登录进行限制,这无疑给交易带来了诸多不便,同时也增加了安全风险。
为了解决这一问题,市面上已经出现了一些插件,如 Prevent Concurrent Logins 和 Wp Single Login。这两款插件都非常简单易用,无需进行复杂的设置,只需选择其中一款安装并启用即可实现账号的单次登录限制。
当然,如果您不想使用插件,也可以通过修改 WordPress 的主题文件functions.php来实现这一功能。以下是一个来自 Prevent Concurrent Logins 插件的示例代码,您可以直接将其添加到 functions.php 文件中,以禁止同一个注册账号同时被多人重复登录:
*/
function wp_user_has_concurrent_sessions() {
return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 );
}
//用户当前会话数组
function wp_get_current_session() {
$sessions = WP_Session_Tokens::get_instance( get_current_user_id() );
return $sessions->get( wp_get_session_token() );
}
//如果用户会话更新则销毁其他会话
function wp_disallow_account_sharing() {
if ( ! wp_user_has_concurrent_sessions() ) { return; }
$newest = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) );
$session = wp_get_current_session();
if ( $session['login'] === $newest ) {
wp_destroy_other_sessions();
} else {
wp_destroy_current_session();
}
}
add_action('init', 'wp_disallow_account_sharing');
*/
function wp_remove_comment_body_author_class($content){
$pattern = "/(.*?)([^>]*)author-([^>]*)(.*?)/i";
$replacement = '$1$4';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter('comment_class', 'wp_remove_comment_body_author_class');
add_filter('body_class', 'wp_remove_comment_body_author_class');
转载请注明:汇站网 » WordPress 教程: 同一用户帐号禁止多个人登录