Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 添加_user_meta并更新_user_meta仅偶尔工作_Php_Wordpress - Fatal编程技术网

Php 添加_user_meta并更新_user_meta仅偶尔工作

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

我试图根据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_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;
    }
}