You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中get_core_updates()在CRON事件调用时报错的解决方案咨询

解决WordPress CRON事件中调用get_core_updates()报错的问题

问题原因

get_core_updates()属于WordPress更新模块的函数,这个模块默认仅在wp-admin后台环境中自动加载。而CRON任务通过wp-cron.php执行时,不会自动加载更新相关的核心文件,因此会触发「函数未定义」的致命错误。

解决方案

方法1:手动加载更新模块依赖文件

在CRON任务的回调函数开头,先检查函数是否存在,若不存在则手动加载对应的核心文件:

function send_update_report_via_cron() {
    // 检查get_core_updates是否可用,不可用则加载依赖文件
    if ( ! function_exists( 'get_core_updates' ) ) {
        require_once ABSPATH . 'wp-admin/includes/update.php';
        // 如果需要获取插件更新信息,还需加载plugin.php
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }

    // 正常调用get_core_updates获取更新数据
    $core_updates = get_core_updates();
    // 此处编写邮件发送逻辑...
}

// 注册CRON任务(示例)
add_action( 'my_custom_update_report_cron', 'send_update_report_via_cron' );

update.php包含了get_core_updates()及其他更新相关核心函数,按需加载即可。

方法2:触发WordPress内置更新检查逻辑

通过调用WordPress内置的更新检查函数,自动加载依赖模块并获取最新更新数据:

function send_update_report_via_cron() {
    // 触发核心版本检查,自动加载更新模块依赖
    wp_version_check();
    // 若需插件更新数据,触发插件更新检查
    wp_update_plugins();

    // 此时可正常调用get_core_updates()
    $core_updates = get_core_updates();
    // 邮件发送逻辑...
}

add_action( 'my_custom_update_report_cron', 'send_update_report_via_cron' );

这种方式不仅能解决函数未定义的问题,还能确保获取到的是最新的官方更新数据,避免使用缓存的旧数据。

注意事项

  • 确保CRON任务的注册逻辑在WordPress初始化完成后执行(比如挂在init钩子之后,或插件主文件的末尾),避免出现其他依赖问题。
  • 多站点环境下,若需获取站点级更新数据,可替换为get_site_core_updates(),加载逻辑保持一致。

内容的提问来源于stack exchange,提问作者madcoc5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:05:08