我正在尝试向我的wordpress网站用户显示一些内容,具体取决于他们登录的次数。我尝试使用user_meta和wp_login挂钩来完成此操作。
add_action( 'wp_login', 'survey_login' );
function survey_login() {
global $current_user;
get_currentuserinfo();
$login_count = get_user_meta($current_user->ID, 'login_count', true);
if($login_count == "") { $login_count = 0; }
update_user_meta($current_user->ID, "login_count", $login_count++ );
if($login_count >= 5) {
$_SESSION['csm_survey_login'] = true;
}
}
这似乎应该可行,但由于某种原因,user_meta键仅在1/20的时间内被添加/更新。我已经找不到如何或为什么的模式。
我已经尝试将功能简化为
add_user_meta($current_user->ID, 'login_count', 1);
或者
update_user_meta($current_user->ID, 'login_count', 1);
两者都给了我同样的麻烦。
任何人都知道为什么update_user_meta或wp_login只能在很短的时间内工作?
答案 0 :(得分:2)
问题在于你的增量。 $login_count++
返回$login_count
的当前值,然后递增。您希望++$login_count
返回递增的值。
add_action( 'wp_login', 'survey_login' );
function survey_login() {
global $current_user;
get_currentuserinfo();
$login_count = get_user_meta($current_user->ID, 'login_count', true);
if($login_count == "") { $login_count = 0; }
update_user_meta($current_user->ID, "login_count", ++$login_count );
if($login_count >= 5) {
$_SESSION['csm_survey_login'] = true;
}
}
干杯。
答案 1 :(得分:1)
第一次加载时,元键将不存在,如果找不到元键,返回false
的函数不是空字符串,并且不能递增{{1} }。不要使用false
,因为这将为empty()
返回true,但要测试false而不是空字符串使用:
0