3

ユーザーの PHP バージョンが十分でない場合、以下のコードを使用してプラグイン自体を無効にしています。問題の 1 つは、この機能によってプラグインが正常に拒否されたにもかかわらず、プラグインが有効になっていることを示す黄色のメッセージ ボックスが表示されることです。黄色のメッセージを表示しない方法はありますか?

function Plugin_Requirements() {
    global $wp_version;
    $plugin = plugin_basename( __FILE__ );
    $plugin_data = get_plugin_data( __FILE__, false );
    $numPHPver='5.1.2';     
    $strMsg .= $plugin_data['Name'] . ': ' . __('requires PHP')  . ' ' . $numPHPver . __(' or higher. Your PHP version is : ') . phpversion() . __('. Deactivating the plugin.') . '<br />';

    if ( version_compare(phpversion(), $numPHPver, "<" ) ) {
        echo '<div class="error"><p>' . $strMsg . '</p></div>';
        deactivate_plugins( $plugin );
    }   
}
add_action( 'admin_init', 'Plugin_Requirements' );
4

7 に答える 7

7

$_GETメッセージをトリガーする変数を設定解除することができます:

if ( version_compare(phpversion(), $numPHPver, "<" ) ) {
    echo '<div class="error"><p>' . $strMsg . '</p></div>';
    deactivate_plugins( $plugin );
    unset($_GET['activate']);
}

より良いアプローチは、プラグインのアクティブ化フックを終了する (またはエラーをスローする) ことによって、プラグインをアクティブ化できないようにすることだと思います。Wordpress は、致命的なエラーのためにプラグインをアクティブ化できなかったことを示すエラー メッセージを表示しますが、ここでは適切と思われます。

function my_activation_hook() {
    $required_php_version = '5.1.2';

    if (version_compare(PHP_VERSION, $required_php_version, '<')) { 
        $plugin_data = get_plugin_data(__FILE__, false);
        $message = $plugin_data['Name'] . ' ' . __('requires PHP')  . ' ' . $required_php_version . __(' or higher. Your PHP version is ') . phpversion() . '.';
        echo "<p>{$message}</p>";
        exit;
    } 
} 
register_activation_hook(__FILE__, 'my_activation_hook');
于 2012-09-09T21:06:46.620 に答える
0

get_plugin_data()

関数は WordPress 管理者でのみ機能します。代わりに get_plugin_data() を使用して、プラグイン名とプラグイン バージョンの定数をプラグインで定義できます。このスレッド http://wordpress.org/support/topic/php-fatal-をご覧ください。未定義関数のエラー呼び出し get_plugin_data

于 2013-07-26T05:54:21.450 に答える
0
function _my_plugin_php_warning() {
    echo '<div id="message" class="error">';
    echo '  <p>My Plugin requires at least PHP 5.  Your system is running version ' . PHP_VERSION . ', which is not compatible!</p>';
    echo '</div>';
}

function deactivate_plugin_conditional() {

    if ( version_compare( PHP_VERSION, '5.2', '<' ) ) {
        $plugin = plugin_basename(__FILE__);

        if ( is_plugin_active($plugin) ) {
            deactivate_plugins($plugin);    
        }   
        add_action('admin_notices', '_my_plugin_php_warning');

    } else {
        //Load classes
    }
}

add_action( 'admin_init', 'deactivate_plugin_conditional' );

これにより、エラーが発生しなかった場合にのみプラグインが有効になります。プラグインがすでにアクティブになっている場合は、無効になります。うまくいけば、これはあなたのために働く. その結果を教えてください。

于 2012-09-04T11:20:34.217 に答える
0

メッセージをまったく表示したくない場合は、php ページに移動し、ページ上部の開始 php タグの直後に error_reporting(0) を追加します。

于 2013-07-26T06:07:05.240 に答える
-2

現在、プラグインの一部としてそれを行うことはできないようです。

于 2012-09-24T11:15:09.103 に答える