web-dev-qa-db-ja.com

テーマを有効にする前にPHPのバージョンを確認する

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

しかしながら、これはテーマがどうにかして活性化され、ユーザーが何もすることができないので、これは不可能です。

3
Kluska000

あなたのテーマファイルの中にチェックを実装したいので、あなたはアクション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を以前のアクションに移動できます。

4
Sven