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

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

  • ID:日志 ID;
  • user_login:用户登录账号,可能是用户名,也可能是邮箱;
  • log_time:登录时间;
  • ipaddress:用户 IP 地址;
  • message:消息,登录失败则记录错误信息;

WordPress 创建数据库表的代码可以参考:

  1. global $pagenow;
  2. if ( is_admin() && isset( $_GET['activated'] ) && $pagenow == 'themes.php' ) {
  3. global $wpdb;
  4. $table_name = $wpdb->prefix . 'logs';
  5. if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name ) {
  6. $sql = 'CREATE TABLE IF NOT EXISTS ' . $table_name . ' (
  7. ID bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  8. user_login varchar(250) NOT NULL,
  9. log_time datetime NOT NULL,
  10. ipaddress text NOT NULL,
  11. message text
  12. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;';
  13. require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
  14. dbDelta($sql);
  15. }
  16. }

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

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

  1. function bzg_login_logs($user_login, $user_password) {
  2. global $wpdb;
  3. $user = wp_authenticate($user_login, $user_password);
  4. $data = array(
  5. 'user_name' => $user_login,
  6. 'log_time' => date('Y-m-d H:i:s', current_time('timestamp') ),
  7. 'ipaddress' => $_SERVER['REMOTE_ADDR'] == '::1' ? '127.0.0.1' : $_SERVER['REMOTE_ADDR'],
  8. 'message' => '登录成功',
  9. );
  10. if ( is_wp_error($user) ) {
  11. $message = $user->get_error_message();
  12. $data['message'] = $message;
  13. $data['message'] = preg_replace('/<a[^>]*>.*<\/a>/i', '', $data['message']);
  14. $data['message'] = wp_strip_all_tags($data['message'], true);
  15. }
  16. $wpdb->insert('wp_logs', $data);
  17. }
  18. add_action('wp_authenticate', 'bzg_login_logs', 10, 2 );

这里用到了钩子 wp_authenticate,WordPress 登录是以 wp_signon()函数来完成的,在该函数中定义了钩子 wp_authenticate,我们通过 wp_authenticate()函数验证登录信息是否正确,然后将结果写入日志。

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

溫馨提示:

文章標題:纯代码给WordPress后台添加用户注册时间登录 IP 记录

文章連結:https://www.wuyanshuo.cn/479.html

更新時間:2022年3月23日

1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。

2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程

3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!

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

WordPress 自动获取网站某个自定义字段的所有值

2022-3-23 16:04:37

建站教程

WooCommerce 添加自定义货币/符号

2022-3-28 17:00:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索