有时候 WordPress插件开发者会对插件进行比较大的版本更新,这些更新可能是不兼容以前版本的。这时候,我们需要提醒插件用户注意这些更新,在插件列表界面添加一个明显的更新提示会帮助用户更方便的了解我们的插件更新。WordPress 4.3 以前的版本是支持直接显示插件 readme.txt 文件中的“Upgrade Notice”信息的,不知道什么原因,最近两个版本的 WordPress 去掉了插件更新提示的支持。在插件列表中的更新提示的效果可以参考下图。
插件 readme.txt 里面的更新提示示例
在下面的代码中 ## Upgrade Notice ##
是更新提醒的文档标题,不要修改,### 1.8 ###
是新版的版本号,版本号下面的文字是 WordPress插件列表页面显示的更新提示。下面的更新提示代码片段是我为 Wizhi Multi Filter 插件 添加的更新提示。
## Upgrade Notice ## ### 1.8 ### 此版本将弃用直接使用类新建多条件查询的方法,更新前请先检查自己的主题。 ### 1.7 ### 新版本需要 PHP 5.4 以上的版本才能正常运行,如果PHP版本低于5.4,请不要更新此版本,否则将使您的站点出现致命错误而不可访问。
添加并显示版本更新提示到插件列表页面
虽然 WordPress 内核目前去掉了直接显示”Upgrade Notice” 的功能,我们还是可以通过一个 API 在我们的插件中加入这个功能的,这个动作钩子的名称是:in_plugin_update_message-{$plugin_main_file}
(math.) genus$plugin_main_file
是插件的主文件。具体显示信息的方法看一下下面的代码就明白了。
// 添加插件更新提示
add_action('in_plugin_update_message-wizhi-multi-filters/wizhi-multi-filter.php', 'showUpgradeNotification', 10, 2);
function showUpgradeNotification($currentPluginMetadata, $newPluginMetadata){
// 检查 "upgrade_notice" 数据并显示
if (isset($newPluginMetadata->upgrade_notice) && strlen(trim($newPluginMetadata->upgrade_notice)) > 0){
echo '<p style="background-color: #d54e21; padding: 10px; color: #f9f9f9; margin-top: 10px"><strong>Important Upgrade Notice:</strong> ';
echo esc_html($newPluginMetadata->upgrade_notice), '</p>';
}
}
summarize
需要注意的是,上面代码中的 $newPluginMetadata 是从 WordPress插件仓库里面直接读取的,而不是已经安装的插件里面的数据,所以,我们至少要更新两个版本才能看到上面的提示:一个是旧版插件,一个是包含更新提示的新版插件。
插件更新提示是一个很重要的特性,很奇怪 WordPress 官方的开发文档中并没有提到这个功能,并且在最近的两个版本中,这个特性也隐藏得更深了,希望这个功能尽早回到 WordPress 内核中,到时候,上面介绍的方法就可以弃用了。