删除所有带有特定挂钩的预定事件


8

我有几个cron作业都钩到了同一个钩子上,但是每个作业都有不同的参数(帖子ID)。wp_clear_scheduled_hook只会显示与传递的参数匹配的清除作业(或没有参数的作业,如果未提供参数)。

有没有一种方法可以删除与挂钩相关的所有cron作业,而不管该作业具有什么参数?(无需通过遍历ID来“手动”执行操作)。


似乎答案已删除!为了阐明我要达到的目标:每个帖子都有一个有效期-我想在此日期之后删除该帖子。

(另一种选择是进行一项cron作业-每24小时重复一次,以删除所有过期的帖子)。

但是,我决定为每个帖子创建一个一次性工作-但似乎您不能不循环浏览一次就删除所有工作。

Answers:



10

我刚刚快速编写了以下函数,它将清除指定钩子的所有cron,而与cron时间和钩子参数无关。

注意:我尚未测试该功能,所以请不要在您的实时站点上运行它。

function wpse39681_clear_all_crons( $hook ) {
    $crons = _get_cron_array();
    if ( empty( $crons ) ) {
        return;
    }
    foreach( $crons as $timestamp => $cron ) {
        if ( ! empty( $cron[$hook] ) )  {
            unset( $crons[$timestamp][$hook] );
        }

        if ( empty( $crons[$timestamp] ) ) {
            unset( $crons[$timestamp] );
        }
    }
    _set_cron_array( $crons );
}

相关: http : //core.trac.wordpress.org/ticket/18997


谢谢Hameedullah。我决定使用替代选项,因为这是WordPress删除旧的垃圾帖子的方式。我尚未测试您的功能,但看起来不错,可以完成工作。再次感谢。
史蒂芬·哈里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.