能否跨服务器远程安装WordPress插件?已试WP_CLI无效,持有管理员凭证及URL
绝对可以实现!既然你手里已经有目标站点的WP管理员登录凭证和站点URL,哪怕之前WP CLI尝试失败,也有其他靠谱的方法能完成远程安装插件的需求。下面给你两种实用的方案:
这是官方支持的标准方式,安全又稳定,只要目标站点的WordPress版本在4.7以上(现在基本都是)就能用。
第一步:获取认证凭证
WordPress 5.6及以上版本自带「应用密码」功能,你可以登录目标站点后台,进入「用户 > 个人资料」页面,拉到最底部找到「应用密码」,创建一个专门用于API调用的密码(记住这个密码,只显示一次)。如果是旧版本,可以安装JWT认证类的插件来生成令牌。第二步:构造API请求安装插件
首先确保目标站点的wp-config.php里没有禁用文件编辑(如果之前关了,需要临时添加define('DISALLOW_FILE_EDIT', false);),同时服务器的wp-content/plugins目录有写入权限。用curl命令的示例如下(把占位符换成你的实际信息):
curl -X POST \ https://你的目标站点URL/wp-json/wp/v2/plugins \ -u "管理员用户名:刚才生成的应用密码" \ -H "Content-Type: application/json" \ -d '{"slug": "插件的slug", "status": "active"}'这里的「插件slug」就是插件在WordPress.org上的唯一标识,比如Yoast SEO的slug是
wordpress-seo,你可以在插件官网页面的URL里找到它。如果是第三方自定义插件,需要先把zip文件上传到目标服务器的插件目录,再用API请求激活即可。
如果目标站点禁用了REST API,或者你更习惯模拟后台操作的方式,可以试试这种方法,但要注意容易受安全插件或WP版本更新影响:
- 首先模拟登录目标站点的后台,获取登录后的Cookie和页面的CSRF令牌(从
wp-admin/plugin-install.php页面的HTML里提取_wpnonce值)。 - 然后构造POST请求,提交插件安装的表单数据,比如搜索插件slug或者上传插件zip文件。不过这种步骤比较繁琐,需要处理Cookie和令牌的有效期,不如REST API省心。
顺便提一下,之前WP CLI没成功可能是这些原因:
- 目标服务器没开SSH权限,或者你本地没有SSH登录目标服务器的权限;
- WP CLI在目标服务器上没正确安装,或者PHP路径配置错误;
- 两台服务器之间的网络被防火墙拦截,导致远程WP CLI请求无法到达;
- 如果是用
wp ssh远程执行,需要确保目标服务器已经安装WP CLI,并且本地配置了正确的SSH别名。
总的来说,只要你有合法的管理员权限,远程安装插件完全没问题,优先用REST API的方式,操作起来更顺畅。
内容的提问来源于stack exchange,提问作者K is here

