add_user_meta和update_user_meta只是零星地工作

时间:2013-05-03 15:42:10

标签: php wordpress-plugin wordpress

我正在尝试向我的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只能在很短的时间内工作?

2 个答案:

答案 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