Wordpress wp_schedule_event - 不返回下一个计划

时间:2013-11-03 14:35:12

标签: wordpress-plugin wordpress

我很难搞清楚这个问题。基本上,我写了一个插件..文件结构如下

-myplugin.php (init and includes myplugin-common.php )
-myplugin-admin.php (plugin menu item index and includes myplugin-part1.php and part2)
-myplugin-common.php
-myplugin-part1.php
-myplugin-part2.php

我有一个激活cron的函数,如果它尚未启用..下面的例子(这是在myplugin.php中)

function myplugin_cron_activate() {

    if ( get_option( SCHEDULE_ENABLED ) !== false ) {
        if ( get_option(SCHEDULE_ENABLED) == 'true') {
            if (!wp_next_scheduled('wpo_cron_event2')) {

                $schedule_type = get_option(SCHEDULE_TYPE, 'weekly');

                wp_schedule_event(time(), $schedule_type, 'my_cron_event2');
                add_action('my_cron_event2', 'my_cron_action');

        }
        }
    }

现在* my_cron_action *位于公共文件 myplugin-common.php 中。这很好,无论如何都可以。

问题是, myplugin-part2.php 是一个启用或禁用调度程序的设置页面。当我启用它时..调用* myplugin_cron_activate()*函数。但它不会激活wordpress中的cron函数。但是当我转到admin中的插件主链接时 - 它会被激活。

请注意 myplugin-part1.php,myplugin-part2.php 都包含在 myplugin-admin.php 中。 myplugin-admin.php 包含2个标签,并相应地加载这2个文件。

当我提交设置页面时,我仍然无法弄清楚为什么调度程序没有被激活 - 是的,我在$ POST调用函数。但是当我点击管理页面的主链接时它会被激活..(因为这个我也无法显示下一个计划时间)

1 个答案:

答案 0 :(得分:0)

您需要添加每周计划

function add_weekly_cron( $schedules ) {
        $schedules['weekly'] = array(
        'interval' => 604800,
        'display' => __('Once Weekly','beforeafter')
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'add_weekly_cron' ); 

另外,我认为你以错误的方式触发了wp-cron

add_action('my_action_hook','my_cron_function');
if( !wp_next_scheduled( 'my_cron function' ) ) {  
   wp_schedule_event( time(), 'weekly', 'my_action_hook' );  

使用Cron View调试WP-CRON:)