在主题激活前检查php版本

时间:2014-01-25 作者:Kluska000

我有一个需要php 5.3以上版本的主题。如果较旧,则会发生致命错误。

所以,当用户尝试激活这个主题时,我需要做的是在进入主题代码之前检查php版本,然后,如果php版本太旧,显示一些消息和don\'t 激活我的主题,但保留以前活动的主题

有可能吗?

我有这个代码来检查版本

define("THEME_REQUIRED_PHP_VERSION", \'5.3.0\');
define("THEME_IGNORE_PHP_VERSION", 0);

        //check if good php version
        if ( !THEME_IGNORE_PHP_VERSION&& version_compare(phpversion(), THEME_REQUIRED_PHP_VERSION, \'<\')) {
            // php version isn\'t high enough
            wp_die("<h2>You need to update php version.</h2>Too old version of PHP to run Circle Theme. Actual version is <strong>" . phpversion() . "</strong>, required is <strong>" . CIRCLE_REQUIRED_PHP_VERSION . "</strong>.", "Theme");
        }
然而,这不能是因为主题被激活了,用户不能做任何事情。

1 个回复
最合适的回答,由SO网友:Sven 整理而成

当您想在主题文件中实现检查时,可以使用操作after_switch_theme; 您可以猜到,这将激活您的主题以执行检查,但如有必要,将切换回上一个主题。

如果未满足要求,我们将通过管理员通知通知用户(通过操作admin_notices) 并立即切换回上一个主题。您将通过以下方式检索上一主题的详细信息get_option(\'theme_switched\')

// Minimum required version.
define( \'THEME_REQUIRED_PHP_VERSION\', \'5.3.0\' );

add_action( \'after_switch_theme\', \'check_theme_setup\' );
function check_theme_setup(){

  // Compare versions.
  if ( version_compare(phpversion(), THEME_REQUIRED_PHP_VERSION, \'<\') ) :

  // Theme not activated info message.
  add_action( \'admin_notices\', \'my_admin_notice\' );
  function my_admin_notice() {
  ?>
    <div class="update-nag">
      <?php _e( \'You need to update your PHP version to run Circle Theme.\', \'text-domain\' ); ?> <br />
      <?php _e( \'Actual version is:\', \'text-domain\' ) ?> <strong><?php echo phpversion(); ?></strong>, <?php _e( \'required is\', \'text-domain\' ) ?> <strong><?php echo THEME_REQUIRED_PHP_VERSION; ?></strong>
    </div>
  <?php
  }

  // Switch back to previous theme.
  switch_theme( $old_theme->stylesheet );
    return false;

  endif;
}
您可以在functions.php 但也在一个额外的插件中。如果您在插件中使用它,则可以移动检查点after_switch_theme 以避免主题激活。

结束