Использование класса WP_Session_Tokens в процедурном плагине WordPress

Я пишу плагин для WordPress, в процедурном PHP.

Во всяком случае, в плагине, я хочу обновить пользователей WordPress Session Token, который хранится в usermeta Таблица.

Покопавшись, я нашел класс, который имеет некоторые методы который, я думаю, поможет мне достичь моей цели.

Я написал функцию, которая содержит правильные данные, обновляет время истечения, и я просто пытаюсь передать обновление через WP_Session_Tokens,

Но я получаю ошибку:

Using $this when not in object context in .../wp-includes/class-wp-session-tokens.php on line 166

Моя функция такова:

function update_auth_cookie($user_login, $user) {

$options = get_option('options_premium');
$cookieTime = $options['cookieTime'];

$sessionToken = wp_get_session_token();
$verifier = hash('sha256', $sessionToken);

$sessions = get_user_meta($user->ID, 'session_tokens', true);
$sessions[$verifier]['expiration'] = $cookieTime;

WP_Session_Tokens::update( $verifier, $sessions[$verifier]);

}
add_action('auth_cookie_valid', 'update_auth_cookie', 10, 2);

Возможно ли получить доступ к классу с помощью такой функции? Если так, то очевидно, что я делаю не так?

1

Решение

Ваш вопрос немного широк, поскольку проблема, с которой вы сталкиваетесь, на самом деле не связана с проблемой, которую вы пытаетесь решить (и ее решение не обязательно даст вам решение того, что вы пытаетесь сделать).

Но в любом случае: вы получаете эту ошибку, потому что вы вызываете метод статически, и вы должны сначала создать экземпляр WP_Session_Tokens и сделать звонок динамично.

Это базовые концепции ООП, которые вы должны знать, прежде чем пытаться использовать объекты, и они не намного сложнее, чем обычный синтаксис PHP.

Что-то вроде:

$wp_session_token = WP_Session_Tokens::get_instance($user->ID);
$wp_session_token->update( $verifier, $sessions[$verifier]);

Слово мудрому: я не на 100% уверен, что вышесказанное сработает, и у меня нет удобной установки WP, чтобы протестировать ее, но она, по крайней мере, синтаксически / семантически правильна и не даст вам ошибки, с которой вы столкнулись выше ,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]