Php WordPress-将用户设置为在特定日期后过期

Php WordPress-将用户设置为在特定日期后过期,php,mysql,wordpress,Php,Mysql,Wordpress,我正在一个学校项目的网站上工作。在注册过程中,学生将被要求从下拉列表中选择毕业年份。我希望系统在他们每次登录时对照当前时间检查此值,如果毕业日期超过当前时间,则更改他们的角色。下面是我编写的代码,但是我在日志或WP_调试中没有收到任何错误 /* Check if Student Has Graduated and Change Role */ add_action('wp_login', 'check_graduated', 10, 2); function check_graduated($u

我正在一个学校项目的网站上工作。在注册过程中,学生将被要求从下拉列表中选择毕业年份。我希望系统在他们每次登录时对照当前时间检查此值,如果毕业日期超过当前时间,则更改他们的角色。下面是我编写的代码,但是我在日志或WP_调试中没有收到任何错误

/* Check if Student Has Graduated and Change Role */
add_action('wp_login', 'check_graduated', 10, 2);
function check_graduated($user_login, $user) {
    /* Ger User Id */
    $user_id = $user -> $id;

    /* Check if Graduation Date exists in DB */
    if($grad_year = get_user_meta($user_id, 'user_registration_user_graduation_date', true)) {
        $current_date = time();

        /* Convert Grad Year to Time */
        $grad_date_str = "07/01/" . $grad_year;
        $grad_date = stringtotime($grad_date_str);

        /* Change User Role if Today is Past The Graduation Date */
        if($current_date > $grad_date) {
            change_user_role($user_id, 'former_student', 'student');
        }   
    }
}

function change_user_role($id, $new_role, $old_role) {
    $user = new WP_User( $id );
    $user -> remove_role( $old_role );
    $user -> add_role ( $new_role );
}
在数据库的Usermeta表中,存在以下内容:

|----------------------------------------------------------------------------------|
|  UMETA_ID  |  USER_ID  |                 META_KEY                 |  META_VALUE  |
|----------------------------------------------------------------------------------|
|     36     |     2     |  user_registration_user_graduation_date  |     2016     |
|----------------------------------------------------------------------------------|

正如我所说,当使用ID为2的用户登录时,不会出现错误。我是遗漏了什么还是只是傻了?

您可能想看看这个函数$grad\u date=stringtotime($grad\u date\u str)

应该是

$grad\u date=strtime($grad\u date\u str);


另一方面,您应该非常接近。

您有称为stringtotime的方法吗?我认为php的时间转换函数是strotime。打字错误?

我很笨。谢谢,现在检查一下,我很笨。谢谢,现在检查谢谢,这是其中的一部分。此外,“$user->$id”需要是“$user->id”,所有问题现在都解决了。随时欢迎点击回答按钮。你可以考虑的另一件事就是使用-就像你一样,我不想发布一个完整的解决方案,因为你已经做了一些问题的拍摄和非常接近。我没有这样做的原因是我不确定是否在用户会话被设置之前或之后调用WPL登录动作,但我将调整以简化。谢谢