問題描述

你編寫一個需要 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。