Wp_Schedule_Event()问题

时间:2014-03-13 作者:Brownski

我正在尝试设置一个自定义时间间隔的活动,从Instagram搜索中获取新帖子,并将其创建为wordpress帖子。我让代码在自己的页面上运行,现在我正尝试将其计划为自动执行。

我还安装了Wp Crontroller,以确保Wordpress(事实上)能够识别该事件,但我似乎无法运行代码(也无法找出如何调试它)。

add_action( \'wp\', \'create_schedule\' );

function create_schedule() {
  wp_schedule_event(time(), \'quarter_hour\', \'ig_fetch_start\');
  update_option(\'test\', \'Close!\');
}

add_action(\'ig_fetch_start\',\'ig_fetch_new_posts\');

function ig_fetch_new_posts() {
  update_option(\'test\', \'Fired\');
  // Run function
}
选项update在那里,只是为了查看事件是否正在触发。Wordpress simple似乎永远无法使用ig\\u fetch\\u new\\u posts功能。

1 个回复
最合适的回答,由SO网友:fischi 整理而成

您需要以不同的方式安排活动。在你的方法中wp 安排事件,这意味着每次调用WordPress时都会调用它,将您的选项设置回原位。

我不太确定时间表是否推迟,或者您是否以这种方式创建了多个时间表,但这是不正确的。

您应该检查是否计划了此事件(使用wp_next_scheduled()), 并且只有当此函数返回false时才安排,以避免多个条目/延迟问题。

我还将使用两个不同的选项来检查是否调用了这些函数,因为由于此系统的体系结构,一旦启动了计划的函数,值就会发生更改-只有在下次调用WordPress时才会被覆盖,因为没有计划任何事件。

我还为optionvalue添加了一个时间,以检查它是何时注册的。我总是喜欢知道调试方面的事情。

脚本(包括注册新计划)如下所示:

add_filter( \'cron_schedules\', \'f711_add_quarter_hour_cron_schedule\' );
function f711_add_quarter_hour_cron_schedule( $schedules ) {
    $schedules[\'quarter_hour\'] = array(
        \'interval\' => 900, // Time in seconds
        \'display\'  => __( \'Quarter Hour\' ),
    );

    return $schedules;
}

if ( ! wp_next_scheduled( \'ig_fetch_new_posts_hook\' ) ) { // check if function is scheduled
    wp_schedule_event( time(), \'quarter_hour\', \'ig_fetch_new_posts_hook\' ); // if not, schedule it
    update_option(\'test_scheduled\', \'scheduled\' . time() ); // set your scheduleoption to scheduled
}

add_action( \'ig_fetch_new_posts_hook\', \'ig_fetch_new_posts\' ); // define the hook for the schedule

function ig_fetch_new_posts() { // your updatemagic
    update_option(\'test_fired\', \'Fired\' . time() );
    // Run function
}

结束

相关推荐

wp-cron: freeze at "now"

抱歉问了这么愚蠢的问题。简单地说,我有一个wp(3.5.1版)博客,使用了一个经过大量修改的(我自己)主题。除了wp cron之外,其他一切都正常工作。列出的作业出现在(例如)crontrol中,时间流逝直到“现在”(这意味着作业应该开始)。无论如何,什么都没有发生:计划的后期冻结在“现在”,我的自定义函数冻结在“现在”,等等。如果我手动运行它,一切都正常(因此没有代码问题)。我尝试禁用wp cron(使用define(\'DISABLE_WP_CRON\', true); 并设置一个自定义wp cron