如何在WordPress中按账号天数或登录次数显示「欢迎回来」消息?
解决方案
要实现「登录次数达标或账号创建满指定天数后显示欢迎回来消息」的需求,需要两步操作:统计用户登录次数,再在欢迎消息逻辑中加入条件判断。
1. 统计用户登录次数
WordPress默认不记录用户登录次数,需通过wp_login钩子每次用户登录时更新计数:
// 记录用户登录次数 add_action('wp_login', 'track_user_login_count', 10, 2); function track_user_login_count($user_login, $user) { $login_count = get_user_meta($user->ID, 'user_login_count', true); // 首次登录初始化为1,否则计数+1 update_user_meta($user->ID, 'user_login_count', $login_count ? intval($login_count) + 1 : 1); }
2. 修改原有欢迎消息逻辑
在你现有的vivid_login_page函数中,添加登录次数和账号天数的判断逻辑,替换原有的欢迎文本:
if(!function_exists('vivid_login_page')) { function vivid_login_page() { if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); $first_name = $current_user->user_firstname; $last_name = $current_user->user_lastname; // 自定义阈值(可按需修改) $required_login_count = 3; // 触发消息的登录次数 $required_days = 2; // 触发消息的账号创建天数 // 获取用户登录次数,未统计过则默认为0 $login_count = get_user_meta($current_user->ID, 'user_login_count', true) ?: 0; // 计算账号创建至今的天数 $registration_timestamp = strtotime($current_user->user_registered); $days_since_reg = floor((time() - $registration_timestamp) / (60 * 60 * 24)); // 判断是否显示「欢迎回来」 if ($login_count >= $required_login_count || $days_since_reg >= $required_days) { $greeting = '欢迎回来'; } else { $greeting = "Hello {$first_name} {$last_name}"; } // 输出修正后的导航栏(修复原代码多余的</span>语法错误) print "<div class='calltoactioncontent'> <span>{$greeting}. | </span> <a href='/my-account'>My account </a> | <a href='/wp-admin/profile.php'>My profile</a> | <a href='" . wp_logout_url() . "'>Logout</a> </div>"; } else { print "<div class='calltoactioncontent'> <span class='bolddd'>Hello visitor. </span> <a href='/my-account'>Sign in</a> | <a href='/my-account/registration/'>Register account</a> </div>"; } } add_shortcode('vivid-login-page', 'vivid_login_page'); }
关键说明
- 登录次数会自动存储在用户元数据
user_login_count中,首次登录后开始计数 - 账号天数通过用户注册时间与当前时间的差值计算,取整数天数
- 两个阈值参数可根据实际需求自由调整
- 修复了原代码中多余的
</span>标签,避免HTML语法错误
内容的提问来源于stack exchange,提问作者user832
相关产品推荐
相关产品推荐

