WordPress - установить срок действия пользователя после определенной даты - PullRequest
0 голосов
/ 19 февраля 2020

Я работаю над сайтом для школьной программы. Во время регистрации студентов попросят выбрать год выпуска из выпадающего списка. Я хочу, чтобы система проверяла это значение по отношению к текущему времени при каждом входе в систему и меняла свои роли, если дата выпуска превышает текущее время. Код, который я написал ниже, однако я не получаю ошибок ни в журналах, ни в WP_DEBUG

/* 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     |
|----------------------------------------------------------------------------------|

Like I сказал, что при входе в систему с идентификатором пользователя не отображаются ошибки. Я что-то упустил или просто тупой?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

у вас есть метод с именем stringtotime? Я думаю, что php функция преобразования времени strtotime. опечатка?

0 голосов
/ 19 февраля 2020

Вы можете посмотреть на эту функцию $ grad_date = stringtotime ($ grad_date_str);

Это должно быть

 $grad_date = strtotime($grad_date_str);

https://www.php.net/manual/en/function.strtotime.php

В остальном вы должны быть довольно близко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...