是否可以根据特定操作动态设置新的wp\\u cron作业?
我有一个表单提交过程(我使用重力表单,所以已经在它们的几个挂钩上设置了几个函数),当用户完成并提交表单时,该过程会创建一个特定帖子类型的帖子。
我想做的是在提交时设置一个cron作业。每次表单提交都将设置一个新的cron事件(不要担心,它们会在一定时间后被清除,通常在48小时内)。
我的理解是当你使用wp_schedule_event()
您基本上是在创建一个新的动作挂钩,然后使用自定义函数将其挂钩。所以本质上,我需要动态地创建一个新的钩子(每个钩子都需要唯一),然后为每个钩子创建一个自定义函数(同样,唯一)。
i、 e.类似于
function lmk_alter_method_name( $entry, $form )
{
//.... some code (which sets up a $post object) ...
wp_update_post( $post );
//Call some dynamic wp_cron -related thing here
lmk_set_up_cron( $post->ID );
}
add_action( \'gform_after_submission\', \'lmk_alter_method_name\', 10, 2 );
function lmk_set_up_cron( $post_id )
{
if( !wp_next_scheduled( \'lmk_cron_\' . $post_id ) )
wp_schedule_event( time() + 3600, \'hourly\', \'lmk_cron_\' . $post_id, $post_id );
}
这里的想法是,它将创建一个名为lmk\\u cron\\u 123的钩子,但接下来如何动态地实际钩住它。
我相信有一种更简单的方法,但目前我还不太清楚。有什么建议吗?
最合适的回答,由SO网友:polevaultweb 整理而成
使用WordPress cron的一种简单而动态的方法是为您的计划设置一个操作挂钩,然后仅在需要时添加计划事件。这些事件将调用一个通用函数,并通过$args传入特定的自定义帖子类型详细信息-
add_action(\'my_schedule_event\', \'generic_function\');
function set_schedule($post_id) {
$time = strtotime(date(\'Y-m-d H\') . \':00:00\');
$args = array(\'post_id\' => $post_id);
wp_schedule_event( $time, \'hourly\', \'my_schedule_event\', $args);
}
function generic_function($post_id) {
// do your thing
}
因此,在lmk\\u alter\\u method\\u name()中调用set\\u schedule($post\\u id)。
希望有帮助!