WP_Schedule_Event正在执行,但与挂接相关的函数未运行

时间:2015-01-05 作者:Avishay Bar

我有一个OOP插件,该插件的目的是捕获预定的帖子,将其保存在cron中,然后在发布后2分钟,在其上运行自定义函数。

这是一节简单的课,包括问题的相关部分:

class fb_linter {

    function __construct() {

        add_action(\'init\', array($this,\'init\') );
        add_action(\'admin_init\', array($this,\'admin_init\') );
        add_action(\'admin_menu\', array($this,\'admin_menu\') );

        add_action( \'future_post\',  array(&$this, \'on_post_scheduled\'), 10, 2 );
        add_action( \'activate_cron\', array(&$this,\'post_notification\'), 10, 1);

        }

    function on_post_scheduled( $ID, $post ) {
        $title = $post->post_title;
        if ($post->post_status == \'future\') {
            wp_schedule_single_event(get_post_time(\'U\', true , $post->ID) + 120, \'activate_cron\', array($post->ID));
        }
    }

    function post_notification($post_id) {
        $title = get_the_title($post_id);
        $permalink = get_permalink($post_id);
        $headers = \'From: My Name <[email protected]>\' . "\\r\\n";
        wp_mail(\'[email protected]\', \'Post \' . $title\', $headers);
    }
}
我能够在cron中获取操作,这意味着我可以在Crontrol&;中看到activate\\u cron;Crony菜单,但功能post_notification 从不执行。

当我转移add_action 的调用activate_cron 以及功能post_notifications功能。php,一切正常。

在过去的三天里,我一直在寻找解决方案,但我无法让它发挥作用。

有什么建议吗?

1 个回复
SO网友:DiverseAndRemote.com

因此,在运行cron事件之前,可能没有执行构造函数。如果实例化fb\\U linter类太晚,则调用add_action 不会及时发生的。尝试为类使用singleton设计模式,然后在声明后立即实例化它,它应该可以正常工作。

类似于

class fb_linter {
    public static function get_instance(){
        static $instance;
        if( ! isset( $instance ) )
            $instance = new self();

        return $instance;
    }

    ...
}
fb_linter::get_instance();

结束

相关推荐

如果第一次运行wp-cron.php花费的时间太长,运行两次是否安全?

假设我在WP配置中禁用了“DISABLE\\u WP\\u CRON”。php可以运行wp cron吗。php两次重叠?我有时注意到wp cron。php需要几分钟。我会花整整一个小时,但我的博主整天都在做很多安排,她很忙。比如说我每10分钟用一个真正的crontab运行一次*/10***等。它需要整整15分钟的时间来做生意。15分钟只是一个随机的例子。这花了多长时间,似乎没有任何押韵或理由。可以创建两个wp cron“实例”。php一起安全运行?最旧的实例是否已死亡,而新实例是否已接管?从运行wp-cr