如何显示"您的自定义插件有可用的更新"在wordpress

时间:2014-11-26 13:42:47

标签: wordpress wordpress-plugin

我开发了一个自定义wordpress插件,许多用户已经开始使用它,但现在我有可用于插件的更新,并希望向那些网站上有旧版本插件的用户显示消息。

如何修改插件的代码,以便在对其进行更新后,应该在插件仪表板上向用户发出一条消息,告知插件有可用的更新。

以下是一个场景:

Say a user has version 1.0 of my plugin and the place where I host the plugin has version 1.2, how can I notify the user on his plugins page that my plugin has an updated version??

2 个答案:

答案 0 :(得分:3)

尽管user3042036的回答很棒,而且非常全面,但我认为我会用开源解决方案来回答他/她的回答。

您正在寻找:WordPress Plugin Update Notifier

答案 1 :(得分:1)

首先,好的做法是为您当前的插件版本创建一个常量,并为您的插件创建一个激活和取消激活挂钩。这允许您检查版本号之类的内容,并进行一些常规初始化。

 define ( 'MY_PLUGIN_VERSION', '2.0.0');

register_activation_hook(__FILE__, 'my_plugin_activation'));
register_deactivation_hook(__FILE__, 'my_plugin_deactivation'));
function my_plugin_activation() {
// Initialize some stuff for my_plugin
}
function my_plugin_deactivation() {
// Welp, I've been deactivated - are there some things I should clean up?
}

以下是典型更新功能的示例:

function my_plugin_activation() {
$version = get_option( 'my_plugin_version' );

if( version_compare($version, '2.0.0', '<')) {
    // Do some special things when we update to 2.0.0.
}

update_option( 'my_plugin_version', MY_PLUGIN_VERSION );
return MY_PLUGIN_VERSION;
}

插件更新时没有挂钩。你,作为一个插件  作者,必须手动检查插件版本。首先,你想要  创建一个简单的函数,告诉你你的插件是否适用  日期:

function my_plugin_is_current_version(){
    $version = get_option( 'my_plugin_version' );
    return version_compare($version, MY_PLUGIN_VERSION, '=') ? true : false;
}

然后,测试你的插件是否是最新的,并调用你的更新函数(或者在这种情况下,我们调用与插件更新时相同的功能!):

if ( !my_plugin_is_current_version() ) my_plugin_activation();

测试从一个版本到下一个版本的更新过程并不是那么复杂,尽管它有点麻烦。也许有人有更好的方法,如果有,请告诉我!

激活插件时,您无法真正看到任何错误,因此第一步是创建一个非常简单的钩子来存储插件激活错误。在这种情况下,我们将这些错误存储在插件文件夹

中的error_activation.html中
add_action('activated_plugin', 'my_plugin_activation_error');
my_plugin_activation_error() {
    file_put_contents( plugin_dir_path(__FILE__) . '/error_activation.html', ob_get_contents());
}