Php 添加_user_meta并更新_user_meta仅偶尔工作
我试图根据wordpress站点用户的登录次数向他们显示一些内容。我已经尝试使用user_meta和wp_登录钩子来实现这一点Php 添加_user_meta并更新_user_meta仅偶尔工作,php,wordpress,Php,Wordpress,我试图根据wordpress站点用户的登录次数向他们显示一些内容。我已经尝试使用user_meta和wp_登录钩子来实现这一点 add_action( 'wp_login', 'survey_login' ); function survey_login() { global $current_user; get_currentuserinfo(); $login_count = get_user_meta($current_user->ID, 'login_cou
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;
}
}
这似乎是可行的,但由于某些原因,用户元密钥只在大约20分之一的时间内被添加/更新。我一直无法找到如何或为什么的模式
我试着将函数简化为
add_user_meta($current_user->ID, 'login_count', 1);
或
两者都给我带来了同样的麻烦
有人知道为什么更新用户meta或wp\u登录只能在很短的时间内工作吗?问题在于您的增量
$login\u count++
返回$login\u count
的当前值,然后递增。您需要返回递增值的+$login\u 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;
}
}
干杯。问题在于你的递增
$login\u count++
返回$login\u count
的当前值,然后递增。您需要返回递增值的+$login\u 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;
}
}
干杯。第一次加载时,如果找不到元键,则元键将不存在。返回值
false
的函数不是空字符串,并且不能递增false
。不要使用empty()
,因为这将为0
返回true,但要测试是否为false而不是空字符串,请使用:
add_action( 'wp_login', 'survey_login' );
function survey_login() {
global $current_user;
get_currentuserinfo();
// Get meta key, returns false if it doesn't exist
$login_count = get_user_meta( $current_user->ID, 'login_count', true );
// Test for false and set to default
if ( false === $login_count ){
$login_count = 0;
}
// Increment and update
update_user_meta( $current_user->ID, "login_count", ++$login_count );
if( $login_count >= 5 ) {
$_SESSION['csm_survey_login'] = true;
}
}
第一次加载时,如果找不到元键,则元键将不存在。返回
false
的函数不是空字符串,并且不能递增false
。不要使用empty()
,因为这将为0
返回true,但要测试是否为false而不是空字符串,请使用:
add_action( 'wp_login', 'survey_login' );
function survey_login() {
global $current_user;
get_currentuserinfo();
// Get meta key, returns false if it doesn't exist
$login_count = get_user_meta( $current_user->ID, 'login_count', true );
// Test for false and set to default
if ( false === $login_count ){
$login_count = 0;
}
// Increment and update
update_user_meta( $current_user->ID, "login_count", ++$login_count );
if( $login_count >= 5 ) {
$_SESSION['csm_survey_login'] = true;
}
}