使用WP-CLI更新自定义插件

时间:2022-01-17 作者:whakawaehere

我制作了一个自定义插件,用于根据服务器的IP地址插入Google Tag Manager容器的暂存/生产版本。

如何使其与WP-CLI兼容,以便在运行wp plugin update --all 命令

2 个回复
SO网友:Tom J Nowell

您将实现以下功能:

https://make.wordpress.org/core/2021/06/29/introducing-update-uri-plugin-header-in-wordpress-5-8/

首先,您将添加Update URI: 带有自定义域的插件标题。

其次,您可以使用过滤器名称向插件添加过滤器update_plugins_{$hostname} 哪里{$hostname} 是你给你的Update URI: . E、 g。Update URI: example.com 会有过滤器update_plugins_example.com.

在这个过滤器中,您将运行一些代码来检查插件是否有更新。代码运行完成后,它将返回答案。

https://developer.wordpress.org/reference/hooks/update_plugins_hostname/

您返回的值需要是一个包含参数部分中的值的数组。或者它可以返回false 表示没有更新。

第二个和第三个参数可用于确定哪个插件WP请求更新信息。

使用此过滤器的示例非常少,它是非常新的,文档描述了如何使用它,而不是演示。

下面是一些未经测试的伪代码,我认为这样的过滤器可能是什么样子的:

add_filter( \'update_plugins_example.com\', function( $update, array $plugin_data, string $plugin_file, $locales ) {
    // only check this plugin
    if ( $plugin_file !== \'myplugin.php\' ) {
        return $update;
    }

    // already done update check elsewhere
    if ( ! empty( $update ) ) {
        return $update;
    }

    // CODE GOES HERE TO FIND UPDATE, maybe ask a server what
    // the latest version number is and call `version_compare`?
    $is_update_available = true;

    // no updates found
    if ( ! $is_update_available ) {
        return false;
    }

    // Update found?
    return [
        \'slug\' => \'myplugin\',
        \'version\' => \'9000\',
        \'url\' => \'example.com/myplugin/\',
        \'package\' => \'example.com/newversion.zip\',
    ];
}, 10, 4 );
至于更新的实际检查,这完全取决于您,没有规范的正确方法可以做到这一点。

例如,您可以掷硬币并返回乱七八糟的值。您可以向服务器上的文件发出HTTP请求,以获取最新版本号并将其与安装的版本进行比较。您可以实现许可证密钥检查,或ping Githubs API以获得发布版本,等等。这完全取决于您自己。

SO网友:jdm2112

支持不在wordpress上的插件。组织似乎受支持wp plugin install 也可以由wp plugin update. Daniel在此处解决了该功能的语法问题:https://github.com/wp-cli/wp-cli/issues/2170

的文档install 表示接受插件段塞(.org)或ZIP文件的路径/URL:https://developer.wordpress.org/cli/commands/plugin/install/

你试过了吗wp plugin update "your_plugin_url"?

Daniel还提到了非WP的能力。组织插件,在回答Github上一个无关紧要的问题时介绍更新:

For a non-WordPress.org plugin to introduce an update, it needs to filter the update_plugins transient to return what\'s called a "download offer" for the plugin.

WP Remote has a relevant piece of support documentation: https://wpremote.com/support-center/integrating-wp-remote/adding-wp-remote-support-premium-theme-plugin/
这里有一个直接链接:https://github.com/wp-cli/wp-cli/issues/1662

希望这有帮助。

相关推荐

WP-CLI插件安装导致PHP致命错误-在不在对象上下文中时使用$This

运行时sudo wp install plugin pluginname --allowroot它会导致错误:PHP致命错误:未捕获错误:在/var/www/html/wp-content/plugins/pluginname/blocks中不在对象上下文中时使用$this。菲律宾比索:89我们有一个自定义插件,其中包含以下内容: class Block{ public static function Run() { add_action(\'e