【发布时间】:2019-09-03 17:06:45
【问题描述】:
关于 PHP、wordpress 和 CRONE 的问题。我无法通过小部件调用的函数中的 CRON 过程更改全局变量。
$container
register_activation_hook(__FILE__, 'activate_my_plugin');
function activate_my_plugin() {
wp_clear_scheduled_hook('update_container');
wp_schedule_event( time(), 'hourly', 'update_container');
}
add_action('update_container', 'update_container');
function update_container() {
global $container;
// updating container
}
function use_container() {
global $container;
// !And here we have undefined $container
}
class acw_widget extends WP_Widget{
// ...
public function widget( $args, $instance )
{
use_container();
}
}
我正在尝试将请求缓存到 WP 站点上的数据库。因此,我决定使用 CRON 来安排请求并将结果存储在某个全局容器中。假设小部件将出于其目的从容器中获取数据,但我遇到了看起来像“未定义容器”的问题。
所以,我激活插件,wp-cron.php 显示,该容器已更新(在“update_container”),但在“use_container”中获取容器显示,$container 未定义且未更新。
请您解释一下,为什么会发生这种情况? 如何跟踪初始化/更新全局容器的正确顺序?
代码是真实代码的简化版本。也许这很尴尬,但我是 PHP 和 wordpress 的新手,所以这是我找到的解决方案。
谢谢
【问题讨论】: