由于某些原因,我无法使用wp_schedule_single_event
触发预定事件。
class My_Class
{
public function __construct ()
{
add_action ( 'after_my_event', array ($this, 'schedule_email_send'), 10, 3 );
add_action ( 'sendanemail', array ($this, 'send_an_email'), 10, 1 );
}
// 3rd party action hook (fires successfully)
public function schedule_email_send ( $arg1, $arg2, $arg3 )
{
wp_clear_scheduled_hook ( 'sendanemail'), array ($arg1) );
wp_schedule_single_event ( time () + 60, 'sendanemail'), array ($arg1) );
}
// Cron task (is never fired)
function send_an_email ( $arg1 )
{
$got_here = true; // Breakpoint set
... code that sends an email.
{
}
使用上面的代码,第三方WP插件成功触发after_my_event
挂钩并执行schedule_email_send()
,但我的send_an_email()
中的断点永远不会到达。我在该例程中设置断点,然后单击站点上的随机页面,但sendanemail
操作永远不会触发。当然,出于测试目的,我希望它能在1分钟内发射。
有谁看到我做错了什么?
答案 0 :(得分:0)
这可能是由于在调用add_action函数之前触发了事件。
例如,我有一个在woocommerce_payment_gateways钩子期间创建的对象,并且独立于该钩子而触发了事件,因此该事件没有对类,实例或操作的引用。我要么必须加载类,创建实例,然后在每次页面加载时对其进行注册,要么必须将方法转换为独立于原始类的全局函数。