web-dev-qa-db-fra.com

Vérifiez la version de php avant l'activation du thème

J'ai un thème qui nécessite la version PHP 5.3+. Si ancien - erreur fatale se produit avec elle.

Donc ce que je dois faire lorsque l’utilisateur essaie d’activer ce thème est de vérifier la version de PHP avant d’entrer dans le code du thème, puis, si la version de PHP est trop ancienne, affiche un message et ne pas active mon thème, mais restez avec celui qui était actif avant

C'est possible?

J'ai ce code pour vérifier la version

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");
        }

Cependant, cela ne peut pas être parce que le thème est activé de toute façon et que l'utilisateur ne peut rien faire.

3
Kluska000

Si vous souhaitez implémenter la vérification dans vos fichiers de thème, vous pouvez utiliser l'action after_switch_theme; comme vous pouvez le deviner, cela activera le contrôle de votre thème mais reviendra au thème précédent si nécessaire.

Si les conditions requises ne sont pas remplies, nous informerons l'utilisateur via une notification de l'administrateur (via l'action admin_notices) et reviendrons instantanément au thème précédent. Vous récupérerez les détails du thème précédent via 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;
}

Vous pouvez utiliser ce code dans votre functions.php mais également dans un plugin supplémentaire. Si vous l'utilisez dans un plugin, vous pouvez déplacer le point de contrôle after_switch_theme vers une action précédente pour éviter l'activation du thème.

4
Sven