最近更新了主题Ripro正式版10.0 2026-6-12,但是后台显示用户下载IP均为127.0.0.1,提醒的邮件内容不显示下载的文章名称和用户名,登陆提醒邮件不显示真实ip。所以本次针对以上三个问题进行了优化。本文记录了优化过程并记录下来防止下次出现同样的问题进行查阅。右侧附件为修改后经过测试正常的文件。
一、后台不显示真实IP。
1、修改inc/template-tags.php里的 get_ip_address() 函数,把代理头判断放到 REMOTE_ADDR 前面。修改后的代码如下:
function get_ip_address($ignore_private_and_reserved = false) {
if ($ignore_private_and_reserved) {
$proxy_headers = array(
'HTTP_CF_CONNECTING_IP',
'HTTP_X_REAL_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
);
foreach ($proxy_headers as $key) {
if (!empty($_SERVER[$key])) {
$parts = explode(',', $_SERVER[$key]);
$ip = trim($parts[0]);
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
}
}
}
}
if (!empty($_SERVER['REMOTE_ADDR'])) {
$ip = trim($_SERVER['REMOTE_ADDR']);
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
}
}
return 'unknown';
}
2、修改inc/goto.php里面的get_ip_address函数。修改后的代码如下:
'ip' => get_ip_address(true),
3、重启nginx查看即可。
二、提醒的邮件内容不显示下载的文章名称和用户名。
1、修改inc/template-shop.php(第1621行)文件。修改后的代码如下:
//发送消息推送"\n"
if (site_push_server('admin', 'vip_pay')) {
$download_user = get_userdata($order->user_id);
$download_user_name = ($download_user && !empty($download_user->user_login)) ? $download_user->user_login : __('未知用户', 'ripro');
$download_post_title = !empty($order->post_id) ? get_the_title($order->post_id) : __('未知文章', 'ripro');
do_action('zb_send_mail_msg', [
'email' => get_bloginfo('admin_email'),
'title' => __('新订单付款成功提醒', 'ripro'),
'msg' => sprintf(
__('下载用户:%s,</br>下载文章:%s,</br>订单金额:%s,</br>详细信息请在网站后台查看订单信息', 'ripro'),esc_html($download_user_name),
esc_html($download_post_title),$order->pay_price),
]);
}
2、重新下载一个文件,检查收到的邮件内容。

三、登陆提醒的邮件内容不显示真实登陆IP。
1、修改inc/template-admin.php。
578行代码修改为如下:
'msg' => sprintf('用户名:%s , </br>登录IP:%s ', $user->user_login, get_ip_address(true)),
600行代码修改为如下:
$ip_address = get_ip_address(true);
609行代码修改为如下:
'msg' => sprintf('用户名:%s , </br>注册邮箱:%s , </br>注册IP:%s ', $user_obj->user_login, $user_obj->user_email, get_ip_address(true)),
2、保存后测试登陆即可。
3、优化登陆提醒邮件内容格式。
丰富登陆提醒邮件内容格式,登录邮件标题变成安全提醒:检测到用户登录,正文里补了这些信息:
- 用户名
- 登录时间
- 登录 IP
- 登录设备
- “如果不是本人操作,请检查账号安全”的提示
代码修改如下:
//发送消息推送"\n"
if (site_push_server('admin', 'login')) {
$login_ip = get_ip_address(true); #新增加的代码
$login_time = wp_date('Y-m-d H:i:s'); #新增加的代码
$login_ua = !empty($_SERVER['HTTP_USER_AGENT']) ? analyzeUserAgent($_SERVER['HTTP_USER_AGENT']) : array(); #新增加的代码
$login_device = array_filter(array( #新增加的代码
!empty($login_ua['os']) ? $login_ua['os'] : '', #新增加的代码
!empty($login_ua['browser']) ? $login_ua['browser'] : '', #新增加的代码
!empty($login_ua['version']) ? $login_ua['version'] : '', #新增加的代码
)); #新增加的代码
$login_device = !empty($login_device) ? implode(' ', $login_device) : '未知设备'; #新增加的代码
do_action('zb_send_mail_msg', [
'email' => get_bloginfo('admin_email'),
#'title' => '用户登录提醒', #原来的代码需要删除
#'msg' => sprintf('用户名:%s , </br>登录IP:%s ', $user->user_login, get_ip_address(true)), #原来的代码需要删除
'title' => '安全提醒:检测到用户登录',
'msg' => sprintf(
'系统检测到一条登录记录,详情如下:</br></br>用户名:%s</br>登录时间:%s</br>登录IP:%s</br>登录设备:%s</br></br>如果这不是您本人操作,请尽快检查账号安全。',
esc_html($user->user_login),
esc_html($login_time),
esc_html($login_ip),
esc_html($login_device)
),
]);
}
4、修改后邮件提醒格式变成如下:
四、新用户注册登记邮件提醒内容优化。
1、代码修改如下:
//发送消息推送"\n"
if (site_push_server('admin', 'register')) {
$register_time = wp_date('Y-m-d H:i:s'); #新增加的代码
$register_ua = !empty($_SERVER['HTTP_USER_AGENT']) ? analyzeUserAgent($_SERVER['HTTP_USER_AGENT']) : array(); #新增加的代码
$register_device = array_filter(array( #新增加的代码
!empty($register_ua['os']) ? $register_ua['os'] : '', #新增加的代码
!empty($register_ua['browser']) ? $register_ua['browser'] : '', #新增加的代码
!empty($register_ua['version']) ? $register_ua['version'] : '', #新增加的代码
)); #新增加的代码
$register_device = !empty($register_device) ? implode(' ', $register_device) : '未知设备'; #新增加的代码
do_action('zb_send_mail_msg', [
'email' => get_bloginfo('admin_email'),
#'title' => '新用户注册提醒', #原来的代码需要删除
#'msg' => sprintf('用户名:%s , </br>注册邮箱:%s , </br>注册IP:%s ', $user_obj->user_login, $user_obj->user_email, get_ip_address(true)), #原来的代码需要删除
'title' => '安全提醒:检测到新用户注册', #新增加的代码
'msg' => sprintf( #新增加的代码
'系统检测到一条注册记录,详情如下:</br></br>用户名:%s</br>注册邮箱:%s</br>注册时间:%s</br>注册IP:%s</br>注册设备:%s</br></br>如果这不是您预期内的注册行为,请尽快检查站点注册安全。',
esc_html($user_obj->user_login), #新增加的代码
esc_html($user_obj->user_email), #新增加的代码
esc_html($register_time), #新增加的代码
esc_html($ip_address), #新增加的代码
esc_html($register_device) #新增加的代码
), #新增加的代码
]);
}
2、更新后显示如下。

五、登陆注册缓慢优化。
声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
