禁用激活WordPress插件时出现的消息

Ten*_*eno 3 php wordpress wordpress-plugin

当用户的PHP版本不足时,我正在使用下面的代码来停用插件本身.一个问题是黄色消息框出现说该插件已被激活,尽管该功能已成功拒绝该插件.那么有没有办法不显示黄色信息?

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' );
Run Code Online (Sandbox Code Playgroud)

Ric*_*d M 6

您可以取消设置$_GET触发消息的变量:

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

我认为更好的方法是不允许你的插件被激活,退出(或抛出错误)它的激活钩子.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');
Run Code Online (Sandbox Code Playgroud)