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

WP多站点中wp_update_plugins钩子无法更新插件的问题求助

解决WordPress多站点插件更新触发与Cron疑问

一、网络级别wp_update_plugins钩子的触发方法

1. 手动触发

  • 后台操作:直接进入网络管理后台的「插件」页面,点击「检查更新」按钮,即可触发网络级插件更新检查,覆盖所有子站点。
  • 自定义代码触发:在主题functions.php或自定义插件中添加以下代码,使用超级管理员账号访问站点前端即可触发,执行后记得删除代码避免重复触发:
if (is_super_admin()) {
    // 触发网络级插件更新检查
    wp_update_plugins();
    // 同步所有子站点的插件更新状态
    foreach (get_sites() as $site) {
        switch_to_blog($site->blog_id);
        wp_update_plugins();
        restore_current_blog();
    }
}

2. 自动触发(定时任务)

  • WP Crontrol配置:在网络管理后台使用WP Crontrol创建定时任务,选择「PHP代码」类型,填入上述网络级更新代码,设置执行周期(如每日一次)。
  • 服务器定时任务(推荐):通过服务器Crontab添加WP-CLI命令,直接在网络层面自动更新插件:
# 每天凌晨2点执行网络插件更新
0 2 * * * cd /你的WordPress安装目录 && wp plugin update --all --network

二、关于网络级别wp-cron.php的疑问

你了解的内容是正确的:WordPress没有原生的网络级wp-cron.php文件,所有默认Cron任务均基于单个站点。若需实现网络级定时操作,可通过两种方式:

  • 在主站点的Cron任务中加入遍历子站点的逻辑,用switch_to_blog切换站点执行对应操作;
  • 使用WP-CLI的服务器定时任务,跳过WP原生Cron系统,直接执行网络级命令,稳定性更高。

额外说明:子站点无法更新插件的原因

默认情况下,WordPress多站点的子站点管理员没有插件更新权限,所有插件管理(含更新)需在网络管理后台操作。若需开放子站点插件更新权限,可通过自定义代码分配update_plugins权限,但会打破多站点集中管理逻辑,需谨慎操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:03:11