我很难搞清楚这个问题。基本上,我写了一个插件..文件结构如下
-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调用函数。但是当我点击管理页面的主链接时它会被激活..(因为这个我也无法显示下一个计划时间)
答案 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:)