无法在wordpress init hook上设置用户元数据

时间:2014-12-16 14:40:15

标签: wordpress wordpress-plugin

我想插入一些用户元数据以确定用户之前是否已登录 - 如果他们没有,则打算显示欢迎屏幕。

我已经谷歌搜索了所有这些功能,但它们似乎并不适合我。

这是我的代码......

add_action('init', function() {

        $user_ID = get_current_user_id();

        $has_visited = get_user_meta($userID, 'has_visited');

        //check if has_visited key exists - if it doesn't, user's first visit
        if(!$has_visited) {

            //set the has_visited key
            update_user_meta($user_ID, 'has_visited', 1);

            echo 'user has not logged in before'; 

            exit;   
        }
        else { echo 'user has logged in before'; exit; }    
    });

这些函数是否可以在init钩子上运行。我需要它们,所以如果是第一次访问,我可以将用户重定向到另一个页面。

提前感谢您的帮助和智慧。

1 个答案:

答案 0 :(得分:1)

因为你这里有一个错字:

$has_visited = get_user_meta($userID, 'has_visited');

但是,你很难过:

$user_ID = get_current_user_id();

所以$user_ID$userID不一样。

无论如何,首先你需要创建另一个条件来检查用户是否已登录,因为如果没有,则不会有用户ID。

所以你的完整代码应该是这样的:

add_action('init', function() {
    if (is_user_logged_in()) { //Added this
        $user_ID = get_current_user_id();
        $has_visited = get_user_meta($user_ID, 'has_visited', true); //Fixed this
        //check if has_visited key exists - if it doesn't, user's first visit
        if (!$has_visited) {
            //set the has_visited key
            update_user_meta($user_ID, 'has_visited', 1);
            echo 'user has not logged in before';
            exit;
        } else {
            echo 'user has logged in before';
            exit;
        }
    } 
    echo "User not logged in";
});