it-swarm.com.de

Überprüfen Sie die PHP-Version vor der Theme-Aktivierung

Ich habe Thema, das PHP 5.3+ Version erfordert. Wenn älter - schwerwiegender Fehler tritt dabei auf.

Was ich also tun muss, wenn Benutzer versuchen, dieses Theme zu aktivieren, ist, die PHP-Version zu überprüfen, bevor sie in den Theme-Code einsteigt, und dann, wenn die PHP-Version zu alt ist, eine Meldung anzuzeigen und nicht mein Theme zu aktivieren, aber zu bleiben mit dem, der vorher aktiv war

Ist es möglich?

Ich habe diesen Code, um die Version zu überprüfen

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

Dies kann jedoch nicht erfolgen, da das Thema ohnehin aktiviert ist und der Benutzer nichts tun kann.

3
Kluska000

Wenn Sie die Prüfung in Ihren Designdateien implementieren möchten, können Sie die Aktion after_switch_theme verwenden. Sie können davon ausgehen, dass dies Ihr Thema aktiviert, um die Überprüfung durchzuführen, aber bei Bedarf zum vorherigen Thema zurückschaltet.

Wenn die Anforderungen nicht erfüllt sind, benachrichtigen wir den Benutzer über eine Administratorbenachrichtigung (über die Aktion admin_notices) und wechseln sofort zum vorherigen Thema zurück. Sie erhalten die Details des vorherigen Themas über 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;
}

Sie können diesen Code in Ihrem functions.php aber auch in einem zusätzlichen Plugin verwenden. Wenn Sie es in einem Plugin verwenden, können Sie den Checkpoint after_switch_theme auf eine vorherige Aktion verschieben, um die Aktivierung des Themas zu vermeiden.

4
Sven