我正在寻找有关 WordPress 插件开发的帮助。我的插件查询需要身份验证令牌的 API,该令牌是通过令牌交付 API 获取的。令牌每 3600 秒过期一次。
我想以持久的方式存储令牌(对于所有会话,如服务器端缓存)并仅在需要时更新它。可以使用相同的令牌完成多个 Api 调用。问题是,如果我将令牌存储在全局变量中,每次用户重新加载使用我的插件的页面时它都会被重置。 https://wordpress.stackexchange.com/questions/89263/how-to-set-and-use-global-variables-or-why-not-to-use-them-at-all
在寻找答案后我发现:
-WP_CACHE ,但它不是持久的。
-我知道我可以将令牌存储在数据库中,但是数据库中的令牌不是我认为优雅的用例
-诸如用于 PHP 的 Redis 对象缓存之类的工具,但我发现它非常复杂,安装等...
是否有任何好的做法或简单的方法来做到这一点?我只需要将一个字符串保留一个小时,然后在 PHP 插件中访问它。
谢谢。
答案 0 :(得分:2)
在这种情况下,我将使用 WordPress 瞬态:
https://developer.wordpress.org/reference/functions/set_transient/ https://developer.wordpress.org/reference/functions/get_transient/
要设置瞬态,您可以使用以下代码:
$transient = 'your_token_name';
$value = 'your_token'
$expiration = 3600
set_transient( $transient, $value, $expiration );
要再次接收瞬态的值,您可以使用:
$token = get_transient( $transient );
使用这些方法比 update_option
或 get_option
更好,因为 WordPress 完全管理瞬态的过期(删除),因此您不必为此实现自己的逻辑。
在将值传递给瞬态方法之前,您可以通过在 wp-config.php
中存储盐/密钥来对其进行加密和解密。您可以在此处找到有关此主题的更多信息:
http://php.net/manual/es/function.openssl-encrypt.php http://php.net/manual/es/function.openssl-decrypt.php
要在 WordPress 中定义常量,您需要转到 wp-config.php
文件并将其添加到“您可以编辑”字样之间:
define( 'YOUR_SALT', '12345678' );
您可以在 WordPress 中将其作为普通常量再次阅读:
$salt = YOUR_SALT;