WP-CLI无法识别商业插件更新


11

在遇到WP-CLI无法识别商业插件的插件更新之前,我遇到了一个从未遇到过的问题。

插件更新显示在我的WordPress仪表板中,但是运行../wp-cli.phar plugin update --all不会更新它们。如果我运行../wp-cli.phar plugin list,则不会显示它们具有更新。

我已经通过WP-CLI在其他服务器上为相同的商业插件运行了更新,没有任何问题。该服务器上唯一的不同是我没有sudo访问权限,因此,如您所见,我wp-cli.phar直接调用而不是通过wp命令。

WP-CLI正在处理.org存储库中的插件更新,此安装没有任何问题。


1
Nate,您好,我无法wp-cli.phar直接使用专业版“高级自定义字段” 复制此调用。有可用的更新,并且在wp-cli的输出中显示为可用。您正在尝试使用哪些插件?他们是否有可能为此绕过WP的常规例程,从而没有被wp-cli接受?
蒂姆·马隆

感谢蒂姆的答复。我已经发现这几个月来都是零星的,但是使用使用EDD的软件许可的插件往往会发生这种情况,我相信它使用WP的常规技术进行更新。在使用WP-CLI(本地开发人员,一些不同的服务器)的任何地方都发生了这种情况。
NateWr '16

嗯 我必须检查我是否使用的EDD商业插件。您是否记录了wp-cli问题?
蒂姆·马隆

不,我没有记录问题,因为它是如此零星。我无法可靠地重现它(我想知道这是否是瞬态问题)。但是Daniel看着这个SE问题,说他没有听说过问题,也没有想到会引起问题的任何东西。
NateWr '16

1
Nate我上个月遇到了类似的问题,经过几个小时的摸索,我发现我的问题与主机上的DNS解析器问题直接相关。最终,主机在解析DNS时会超时,因此它永远无法连接到更新的源来执行检查。问题的零星性质可能表明您遇到了类似的问题。我需要花几分钟来验证DNS解析和主机的出站连接。
史蒂夫

Answers:


1

您遇到的问题可能是网络级别的问题或某人暂时删除了下载资源。例如在更新之前。

您可以从源代码中获得大多数细节https://github.com/wp-cli/wp-cli

那里的插件更新功能看起来像这样。

function update( $args, $assoc_args ) {
        if ( isset( $assoc_args['version'] ) ) {
            foreach ( $this->fetcher->get_many( $args ) as $plugin ) {
                $assoc_args['force'] = 1;
                $this->install( array( $plugin->name ), $assoc_args );
            }
        } else {
            parent::update_many( $args, $assoc_args );
        }
    }

当您指定wp plugin update --all它时,它实际上会通过 parent::update_many函数,而父函数实际上是CommandWithUpgrade类。

底线是wp-cli使用插件提供的资源,如下所示:

# Install from a remote zip file
wp plugin install http://s3.amazonaws.com/bucketname/my-plugin.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef

但是,您可以在其中看到不应该看到的信息。

边注

请注意,某些高级插件不支持通过WP-CLI进行升级。例如,我知道BackupBuddy和Gravity Forms可以正常工作,但是Yoast的插件却不能。这可能会改变。


1

执行wp-cli的用户需要对wp-content和子目录具有写权限-如果只有某些插件失败,则这些插件的目录可能对该用户是只读的。

wp cli中存在一个错误,错误不会报告缺少的文件权限,而是报告该插件已经更新。

所描述的症状适用于这种情况,因此这将是一些解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.