我很难弄清楚这个问题。所以基本上,我写了一个插件..文件结构如下
-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 功能。但是当我在管理员中转到插件主链接时 - 它被激活了。
请注意myplugin-part1.php 和 myplugin-part2.php都包含在myplugin-admin.php中。myplugin-admin.php包含 2 个选项卡并相应地加载这 2 个文件部分。
我仍然无法弄清楚为什么当我提交设置页面时调度程序没有被激活 - 是的,我正在 $POST 上调用该函数。但是当我单击管理页面的主链接时它会被激活..(因此我也无法显示下一个计划时间)