テーマの動作要件と版を確かめる|Requires PHPと最新版をREST APIで照合

WordPressのテーマには、動かすのに必要なWordPressとPHPの版が、テーマの style.css の先頭に書かれていることがあります。有料テーマを買う前や、テーマを更新する前に、この要件と、自分のサイトに入っているテーマの版を確かめておくと、「有効にできない」「更新したら動かない」を避けやすくなります。この記事では、REST APIでテーマの版と要件を読み、WordPress.orgの最新版と照らす方法を、筆者のサイトで実行した結果とあわせて紹介します。

(確認:筆者のWordPressサイト(WordPress 7.1.3)で、2026年10月21日に実行。取得は読み取りだけで、テーマの更新や変更はしていません)

テーマの要件は、どこに書かれているか

WordPressのテーマの開発者向けの説明(Theme Handbook)には、style.css の先頭のコメントに書く項目として、次の3つが挙げられています。

項目 意味(Theme Handbookの説明)
Requires at least テーマが動く最も古いWordPressの版
Tested up to テーマが検証された最後のWordPressの版
Requires PHP サポートする最も古いPHPの版

WordPress本体には、このうち「Requires at least」と「Requires PHP」を使って要件を確かめる関数(validate_theme_requirements、WordPress 5.5で追加)があり、テーマを切り替える処理(switch_theme)から使われています。要件を満たさない場合は、「今のWordPressの版(またはPHPの版)が最低要件を満たしていない」というエラーを返す作りです(公式リファレンスのソースで確認)。

コード

REST APIの /wp/v2/themes は、インストール済みのテーマの版と、requires_wp・requires_php を返します(管理者の権限が必要)。WordPress.orgのテーマディレクトリにあるテーマは、公開されているAPIで最新版を取得して並べます。

# インストール済みのテーマの版と、動作に必要な WordPress・PHP の版(style.css の Requires at least / Requires PHP)を REST API で読み、
# WordPress.org のテーマディレクトリにあるテーマは、最新版と比べる(読み取りのみ・自分のサイトは管理者の権限が必要)。
import os, json, base64, urllib.request, urllib.error

SITE = os.environ["WP_SITE"].rstrip("/")
AUTH = "Basic " + base64.b64encode(f'{os.environ["WP_USER"]}:{os.environ["WP_APP_PASSWORD"]}'.encode()).decode()

def get(url, auth=False):
    req = urllib.request.Request(url, headers={"Authorization": AUTH} if auth else {"User-Agent": "theme-check"})
    with urllib.request.urlopen(req, timeout=60) as r:
        return json.load(r)

themes = get(SITE + "/wp-json/wp/v2/themes?_fields=stylesheet,template,status,version,requires_wp,requires_php", auth=True)
for t in themes:
    try:
        org = get("https://api.wordpress.org/themes/info/1.2/?action=theme_information&request[slug]=" + t["stylesheet"])
        latest = f'WordPress.org の最新 {org["version"]}(WP {org["requires"]} 以上 / PHP {org["requires_php"]} 以上)'
    except urllib.error.HTTPError:
        latest = "WordPress.org に無い(配布元で確認)"
    print(f'{t["stylesheet"]:<20} {t["status"]:<9} 入っている版 {t["version"] or "-":<8} '
          f'WP {t["requires_wp"] or "(記載なし)"} 以上 / PHP {t["requires_php"] or "(記載なし)"} 以上 → {latest}')

認証情報は環境変数(WP_SITE・WP_USER・WP_APP_PASSWORD)に入れ、コードには書きません。REST APIの公式の説明に、テーマの「Tested up to」を返す項目は無いため、このコードでは扱っていません。

筆者のサイトの結果

cocoon-child-master  inactive  入っている版 1.1.3    WP (記載なし) 以上 / PHP (記載なし) 以上 → WordPress.org に無い(配布元で確認)
cocoon-master        inactive  入っている版 2.8.8    WP 6.1.0 以上 / PHP 7.4.0 以上 → WordPress.org に無い(配布元で確認)
lightning-child      active    入っている版 0.6.0    WP (記載なし) 以上 / PHP (記載なし) 以上 → WordPress.org に無い(配布元で確認)
lightning            inactive  入っている版 15.33.1  WP 6.5 以上 / PHP 7.4 以上 → WordPress.org の最新 15.42.0(WP 6.6 以上 / PHP 7.4 以上)
テーマ 読み取れること
lightning-child(使っている子テーマ) 要件の記載なし。子テーマは、親テーマの要件に従うと考えて、親を見る
lightning(親テーマ) 入っている版は15.33.1(WordPress 6.5以上・PHP 7.4以上)。WordPress.orgの最新は15.42.0(WordPress 6.6以上・PHP 7.4以上。最終更新は2026年9月9日)。版が遅れている
cocoon-master・cocoon-child-master 使っていないテーマ。WordPress.orgには無く、配布元で最新版を確かめる必要がある

注意したいのは、親テーマの status が「inactive」と表示されることです。REST APIの説明では、子テーマの場合、template が親テーマを指すとされており、lightning-child の親は lightning です。つまり、lightning は「使っていない」のではなく、子テーマを通して使われています。一覧を見て、親テーマを削除しないように気をつけてください。

筆者のサイトのWordPressは7.1.3なので、今の版も最新版も、WordPressの要件は満たしています。PHPの版は、サイトヘルスの画面で確かめる必要があり、この記事のコードでは取得していません。

有料テーマを選ぶ時の使い方

有料テーマは、WordPress.orgのテーマディレクトリに載っていないことが多く、上のコードでは「配布元で確認」になります。その場合は、買う前に公式ページの動作環境を読みます。有料WordPressテーマの選び方で確かめた範囲では、LIQUID PRESSはWordPress 6.3以降、SWALLOWはWordPress 4.9以降・PHP 7.4以降と書かれていました。

  • 動作環境の「最低」の版と、自分のサイトの版を比べる(足りなければ、先にWordPressやPHPを上げる)
  • テーマの更新の配り方を確かめる(WordPress.orgのテーマは管理画面から更新。有料テーマは、配布元の方法による)
  • 購入後、子テーマで使う場合は、親テーマを最新に保つ

PHPの版を上げる前の確認はWordPressのPHPバージョンを上げる前の確認に、テーマの自動更新の設定はWordPressの自動更新に、子テーマの確認は子テーマが有効か確かめる方法にまとめています。

この記事で確かめていないこと

  • 筆者のサイトのPHPの版(サイトヘルスで確認が必要)
  • Lightningを15.42.0へ更新した場合の表示の変化(更新していません)
  • Cocoonの最新版(配布元のページを確かめていません)
  • LIQUID PRESS・Emanon・SWALLOWの style.css に書かれた要件(購入していないため、公式ページの動作環境の記載だけ)

まとめ

  • テーマの要件は style.css の「Requires at least」「Requires PHP」に書かれ、WordPressはテーマを切り替える時にこれを確かめる
  • REST APIの /wp/v2/themes で、入っている版と要件を読み、WordPress.orgの最新版と照らせる
  • 筆者のサイトでは、親テーマのLightningが15.33.1で、最新の15.42.0より遅れていた。親テーマは「inactive」と表示されても使われている

本記事は読み取りの方法の説明です。テーマの更新・削除・変更は含みません。