在用户提交时动态创建wp_cront事件

时间:2012-12-30 作者:RichardTape

是否可以根据特定操作动态设置新的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的钩子,但接下来如何动态地实际钩住它。

我相信有一种更简单的方法,但目前我还不太清楚。有什么建议吗?

1 个回复
最合适的回答,由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)。

希望有帮助!

结束

相关推荐

如何在此场景中设置WP Cron

我想使用Wordpress内置的WP Cron每天更新汇率。我目前使用此功能,require_once(WP_PLUGIN_DIR . \'/autocurupdate/currencyexchange_class.php\'); $cx=new currencyExchange(); $cx->getData(); $currency_sql = \"select last_updated from \" . $wpdb->prefix.\"currencies wh