我不知道我会为此使用cookie,因为用户可以修改cookie以匹配当前IP。您可以在注册时将用户的IP存储为用户元,然后通过wp_authenticate_user
滤器
示例代码(未测试):
add_action( \'user_register\', \'wpse157630_add_user_ip\', 10, 1 );
function wpse157630_add_user_ip( $user_id ) {
update_user_meta( $user_id, \'wpse157630_ip_address\', $_SERVER[\'REMOTE_ADDR\'] );
}
add_filter( \'wp_authenticate_user\', \'wpse157630_check_user_ip\', 10, 2 );
function wpse157630_check_user_ip( $user, $password ) {
$stored_ip = get_user_meta( $user->ID, \'wpse157630_ip_address\', true );
if ( $stored_ip == $_SERVER[\'REMOTE_ADDR\'] ) {
return $user;
} else {
return new WP_Error( \'invalid_ip_address\', \'Invalid IP address\' );
}
}
如果你想发疯,可以将用户元存储为IP地址数组,并在用户编辑屏幕中添加一个点,允许用户添加多个IP地址进行比较。