如何通过Shell/Cronjob调用WordPress翻译升级PHP脚本?
直接执行PHP文件实现WordPress翻译更新的方案
你猜的没错——通过URL请求update-core.php会卡在WordPress后台的登录验证环节,毕竟这个页面需要管理员权限的会话才能触发操作。既然能在服务器本机直接以对应权限运行PHP,完全可以绕开HTTP请求,直接调用WordPress内部核心函数完成翻译更新,比模拟POST请求靠谱得多。
具体实现步骤
- 编写独立PHP脚本,无需依赖
update-core.php的POST参数,直接调用官方API:<?php // 加载WordPress核心环境,替换为你服务器上的实际路径 require_once('/var/www/html/wp-load.php'); // 验证执行权限(确保以管理员权限运行) if (!current_user_can('update_core')) { wp_die('无权限执行翻译更新操作'); } // 触发翻译更新,对应原POST参数action=do-translation-upgrade的核心逻辑 wp_update_translations(); echo '翻译更新执行完成'; ?> - 在Shell或Cron中执行脚本:
直接用PHP命令运行即可,无需处理会话或POST参数:
如果要添加到Cronjob(比如每天凌晨2点执行),可以这样配置:php /path/to/your/translation-update-script.php0 2 * * * php /path/to/your/translation-update-script.php >> /var/log/wp-translation-update.log 2>&1
关于POST参数转函数参数的说明
虽然可以修改update-core.php来接收命令行参数,但绝对不推荐这种方式——WordPress版本更新时,你的修改会被直接覆盖。而上面的独立脚本基于官方API编写,不改动核心文件,兼容性和可维护性更强。
如果非要尝试模拟POST请求绕过登录,需要获取管理员的wordpress_logged_in Cookie和页面的wpnonce值来构造curl请求,但这种方式维护成本高,Cookie过期后脚本就会失效,远不如直接调用内部函数稳定。
内容的提问来源于stack exchange,提问作者LeifSec
相关产品推荐
相关产品推荐

