问题描述
你编写一个需要 PHP 5.1 的插件。有人尝试将其安装在使用 PHP 4 的服务器上。如何以安全和 user-friendly 方式处理?
最佳解决方案
此功能和激活钩子防止插件激活,并允许您检查最低 PHP 和 WordPress 版本。
register_activation_hook( __FILE__, array( 'Your_Plugin_Class_Name', 'activate' ) );
/**
* Plugin Activation hook function to check for Minimum PHP and WordPress versions
* @param string $wp Minimum version of WordPress required for this plugin
* @param string $php Minimum version of PHP required for this plugin
*/
function activate( $wp = '3.1', $php = '5.2.4' ) {
global $wp_version;
if ( version_compare( PHP_VERSION, $php, '<' ) )
$flag = 'PHP';
elseif
( version_compare( $wp_version, $wp, '<' ) )
$flag = 'WordPress';
else
return;
$version = 'PHP' == $flag ? $php : $wp;
deactivate_plugins( basename( __FILE__ ) );
wp_die('<p>The <strong>Insert PLugin Name Here</strong> plugin requires'.$flag.' version '.$version.' or greater.</p>','Plugin Activation Error', array( 'response'=>200, 'back_link'=>TRUE ) );
}
次佳解决方案
/**
* Plugin Name: Foo
*/
// Check for required PHP version
if ( version_compare( PHP_VERSION, '5.1', '<' ) )
{
exit( sprintf( 'Foo requires PHP 5.1 or higher. You』re still on %s.', PHP_VERSION ) );
}
// The rest of your plugin code follows
我不知道从哪个 WP 版本发生了,但在 3.5 插件实际上无法激活,错误消息显示给管理员中的用户,这是整洁的。
但是,错误消息未翻译。为了做到这一点,您必须在 exit
调用之前加载翻译文件。
第三种解决方案
您可以激活它并显示一条错误消息:
// if PHP version is lower than 5.1
if(version_compare(PHP_VERSION, '5.1') < 0){
// show a message inside the dashboard
if(is_admin()){
function my_plugin_notice(){
?>
<div class="error below-h2">
<p>
<?php
printf(__('The abc plugin requires at least PHP 5.1. You have %s'), PHP_VERSION);
?>
</p>
</div>
<?php
}
add_action('admin_notices', 'my_plugin_notice');
}
// stop here and do nothing further
return;
}
// if PHP version is equal or higher than 5.1
require dirname(__FILE__) . '/php51code.php';
在返回语句之前还可能以编程方式停用它
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。