在程序化 WordPress 插件中使用 WP_Session_Tokens class
Using WP_Session_Tokens class in a procedural WordPress Plugin
我正在为 WordPress 写一个程序化的插件 PHP。
无论如何,在插件中,我想更新一个用户 WordPress Session Token
,它存储在 usermeta
table 中。
四处挖掘,我发现了一个 class,其中包含一些 methods,我认为这将帮助我实现我的目标。
我写了一个函数,它有正确的数据,更新到期时间,我只是想通过 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);
是否可以通过这样的函数访问 class?如果是这样,我做错了什么很明显吗?
你的问题有点宽泛,因为你遇到的问题与你试图解决的问题并没有真正的关系(解决它不一定能为你尝试做的事情提供解决方案)。
但无论如何:您收到此错误是因为您正在静态调用方法,您应该首先实例化 WP_Session_Tokens
并进行调用 动态.
这是您在尝试使用对象之前应该了解的基本 OOP 概念,并不比常规 PHP 语法难多少。
大致如下:
$wp_session_token = WP_Session_Tokens::get_instance($user->ID);
$wp_session_token->update( $verifier, $sessions[$verifier]);
明智的话:我不是 100% 相信上面的方法会起作用,而且我没有方便的 WP 安装来测试它,但它至少 syntactically/semantically 是正确的,不会给出你就是上面遇到的错误。
我正在为 WordPress 写一个程序化的插件 PHP。
无论如何,在插件中,我想更新一个用户 WordPress Session Token
,它存储在 usermeta
table 中。
四处挖掘,我发现了一个 class,其中包含一些 methods,我认为这将帮助我实现我的目标。
我写了一个函数,它有正确的数据,更新到期时间,我只是想通过 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);
是否可以通过这样的函数访问 class?如果是这样,我做错了什么很明显吗?
你的问题有点宽泛,因为你遇到的问题与你试图解决的问题并没有真正的关系(解决它不一定能为你尝试做的事情提供解决方案)。
但无论如何:您收到此错误是因为您正在静态调用方法,您应该首先实例化 WP_Session_Tokens
并进行调用 动态.
这是您在尝试使用对象之前应该了解的基本 OOP 概念,并不比常规 PHP 语法难多少。
大致如下:
$wp_session_token = WP_Session_Tokens::get_instance($user->ID);
$wp_session_token->update( $verifier, $sessions[$verifier]);
明智的话:我不是 100% 相信上面的方法会起作用,而且我没有方便的 WP 安装来测试它,但它至少 syntactically/semantically 是正确的,不会给出你就是上面遇到的错误。