我一直在开发Wordpress插件,它需要一个cron工作来完成一些工作。我已经完成了作业的设置和调度,我可以使用其中一个插件在cron中看到它,该插件允许您查看cron文件。
然而,该函数似乎从未真正被调用过。
下面是设置cron的函数。我的代码在一个类中,因此我不确定我是否正确执行了此操作,因为我发现的所有示例都没有讨论代码是否在一个类中。
function schedule_archiving() {
if ( ! wp_next_scheduled( \'redirection_reporting_archive_data\') ) {
$time=time();
$time=$time+60;
wp_schedule_event($time, \'daily\', \'redirection_reporting_archive_data\');
}
}
我知道WordPress函数“archive\\u data”工作正常,因为如果我从WordPress手动调用它,数据库中的数据会正确存档,所以问题一定是我的cron config(我想)。
EDIT1:根据请求调用schedule\\u存档的代码。
if ($input[\'archive_enabled\'] == \'true\') {
$archive = new redirector_reporting_class_archive();
$archive->create_db_objects();
$archive->schedule_archiving();
} else {
$archive = new redirector_reporting_class_archive();
$archive->unscheduled_archiving();
$archive->put_archive_back();
$input[\'archive_enabled\'] = \'false\';
}
此代码位于我的settings类的settings validate函数中。
下面是cron作业将调用的archive\\u data函数。
function archive_data() {
write_log(\'redirection-reporting.archive.archive_data starting\');
global $wpdb;
$options = get_option(\'redirection_reporting\');
$days_to_keep = $options[\'days_to_keep\'];
if ($days_to_keep != 0) {
$days_to_keep = $days_to_keep*-1;
}
$sql = "CALL `{$wpdb->prefix}ArchiveRedirectionData` ($days_to_keep)";
$wpdb->query( $sql );
}
EDIT2:我已经将以下内容添加到了add\\u操作和add\\u过滤器调用的其余部分。
$archive = new redirector_reporting_class_archive();
add_action(\'redirection_reporting_archive_data\', array($this, \'archive_data\')); // Adds hook for cron job
您可以查看已发布插件中的完整代码,网址为
https://wordpress.org/plugins/redirection-reporting/.