纯代码给WordPress后台添加用户注册时间登录 IP 记录

如果你的 WordPress 开放注册,很有可能需要一个登录日志记录,方便随时查看会员登录情况,这里简单的说一下实现原理,WordPress 自带的用户管理仅仅可以看到用户名,姓名,电子邮件,角色,文章这几项,如果想要看看这个用户的注册时间,; b B 0 m ~ H以及上次登录时间以及登录 IP 地址等等,是看不到的,首先需要创建一个数据库表用来存放登录日志信息,字段分别是:

  • ID:日志 ID;
  • user_login:用户登录账号,可能是用户名,也可能是邮箱;k @ s
  • log_time:登录时间;
  • ipaddress:用2 + j q户 IP 地址;
  • message:2 % g 9 J o = [消息,登录失败则记录错误信息;

WordPress 创建数据库表的代码可以Q s R y S参考:

  1. global $pagenow;
  2. if ( is_admin() && isset( $_GET[‘activated’&#} n t = , F93; &#4% 5 _ \ m M .1; &~ ! V i l k r U Uamp;& $pagenow= ] b j S – U / L == ‘themI \ w f 0 `es.php’ ) {
  3. global $wpdb;
  4. $table_name = $wpdb->prefix . ‘logs’;
  5. if( $wpdb->get_var("SHOW TABLES LIKE ‘$table_name‘") != $table_name ) {
  6. $sK _ ; M $ql = ‘CRE= W 7 + g L 1ATE TABLE IF NOT EXISTS ‘ . $table_name . ‘ (
  7. ID bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  8. user_login varchar(250) NOT NULL,
  9. lS F B J Sog_time datez f x j + U 6time NOT NULL,
  10. ipaddress text NOT NULL,
  11. message textU \ k /
  12. ) ENGINE=P 8 w J Z NMyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;’X \ 6 q O t W $ s;
  13. require_once&#g 3 z 1 ] \ M A40;ABSPATH . ‘wp-admin/upgrade-functions.php’);
  14. dbDelta($sqe } w h cl);
  15. }
  16. }

将以上代码放到主题文件的 functions.php 中,当启用主题2 O [ x @ x \ (的时候会判断 wp_logs 表是否存在,不存在则创建。

写入登录日志的代码如下:

  1. function bzg_login_logs($user_logint k y & C s . N u, $userU ( } 8 u K_password) {
  2. global $wpdb;
  3. $d * , T ( . ouser = wp_authenticate($user_login, $user_password);
  4. $dat! k / va = array(
  5. ‘user_namU y v L –e’ => $user_login,
  6. ‘log_time’ => date(‘Y-m-d H:i:1 n B 5 e L O ns’,2 | ` % | 6 I f M current_time(‘timestamp’) ),
  7. ‘ipaddress’ => $_SERVER[‘REMOTE_ADDR’] == ‘::1’ ? ‘127.0.0.1’ : $_SERVER[‘REMOTE_ADDR’],
  8. ‘message’ =~ b i F U> ‘登录成功’,
  9. );
  10. if ( is_wp_error($user) ) {
  11. $message = $user->get_error_message();
  12. $data[‘message’] = $mT W l * v L 1essage;
  13. $daw L u ~ v `ta[‘message’] = preg_replacP : s q [ pe(8 U u v‘/<a[^>]*>.*<\/a>/i’, , $data[p V p T‘message’]);
  14. $data[G ` F‘me] U g J U Pssage’] = wp_st* . $ l q j erip_a; 4 * L @ ] E sll_ta& p w v /gs($data[‘messagw p v le’], true);
  15. }
  16. $wpdb->insert(‘wp_logs’, $data4 B \ 1 H w);
  17. }1 , 4 $ ;
  18. add_action(‘wp_authenticate’, & q A D . nb* ) | [ # e Izg_login_logs’,~ J ] # Z \ 0 X 10, 2 );

这里用到了4 9 e i q L 5 c钩子 wp_authenticate,WordPress 登录是以 wp_signon(). J Z w h |函数来完成的,在该函数^ ( m | 8 h C中定义了钩子 wp_authenticates 7 6,我们通过 wp_authenticate()函\ ] \ H L 1 f s数验证登录信息是否正确,然后将结果写入日志。

当然,你可能还需要一个页面来输出登录日志列表,更好的办法是写一个插件来实现所有需求。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 判断页面函数is_page()怎么使用

2022-6-23 14:33:51

WordPress教程

WordPress中使用IndexNow主动提交链接让搜索引擎快速收录

2022-6-23 14:34:27

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索