首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress Cron钩子的连接和运行问题

Wordpress Cron钩子的连接和运行问题
EN

Stack Overflow用户
提问于 2022-06-23 11:19:40
回答 1查看 38关注 0票数 0

我正在定制Wordpress插件,并做了一个简单的形式:

代码语言:javascript
复制
  <form action="" method="post">
        <input type="submit" name="button_update_products" value="Update">
  </form>
...
...
代码语言:javascript
复制
if (isset($_REQUEST['button_update_products'])) :
   add_action('admin_head', function () {wp_schedule_single_event(time() + 50,'t_cron_now');});

   add_action('t_cron_now', function () {...do something});
endif;

当我运行这段代码并单击“更新”按钮时,Wordpress正在创建't_cron_now‘钩子,并以50秒的延迟对其进行调度。但是它没有将第二个函数附加到这个钩子上。我正在用Crontrol插件检查这种行为,这很奇怪。

但是,如果我稍微修改代码如下:

代码语言:javascript
复制
if (isset($_REQUEST['button_update_products'])) :
   add_action('admin_head', function () {wp_schedule_single_event(time() + 50,'t_cron_now');});
endif;

   add_action('t_cron_now', function () {...do something});

一切正常。

创建t_cron_now钩子,并将函数附加到该钩子上。

我不知道为什么会发生这种事?为什么我要搬家:

代码语言:javascript
复制
add_action('t_cron_now', function () {...do something});

if之外(isset($_request‘按钮_update_products’)) :语句来完成这项工作?有人能理解我的这种行为吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 11:38:55

wp_schedule_single_event()调度只能在指定时间触发的钩子。

add_action()注册一个要在调用指定钩子时运行的操作,但它只为当前请求注册它。

因此,当按计划启动钩子的时间时,如果没有设置$_REQUEST['button_update_products'],那么它将不在请求中,除非您再次提交表单,WordPress将不会找到要触发的操作。

但是,如果在if语句之外添加它,WP将在每个页面请求上注册操作,并且只在计划触发时触发。

因此,只要调度程序在if语句中,就可以将其置于if语句之外。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72729271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档