この記事は最後に更新してから1年以上経過しています。

5.5の機能強化:テーマ変更時に要求バージョンを確認

説明

WordPress 5.5 RC 2が公開され、来週には正式版がリリース。変更箇所が多い「WordPress 5.5 RC 2(以降RC 2)」のソースコードを眺めていると、テーマの切り替え前にWordPressとPHPのバージョンを確認するようになっていた。

はじめに、この記事は公開された5.5 RC 2をもとにしており、正式リリースの際に変更される可能性があることを予めお断りする。

WordPressとPHPのバージョン

テーマのstyle.cssにはそのテーマが対応しているWordPressとPHPのバージョン情報が記述されている。以下は「Twenty Twenty:のstyle.cssの冒頭部分で、「Requires at least」がWordPressのバージョン、「Requires PHP」がPHPのバージョンを示している。

/*
Theme Name: Twenty Twenty
Text Domain: twentytwenty
Version: 1.4
Requires at least: 4.7
Requires PHP: 5.2.4

これらの記述がstyle.cssに追加されるようになったのは最近であり、その前はテーマのreadme.txtに記述されていた。例えばWordPress 5.2に同梱されている「Twenty Nineteen」のreadme.txtの冒頭部分は以下の通りである。

=== Twenty Nineteen ===
Contributors: wordpressdotorg
Tags: one-column, flexible-header, accessibility-ready, custom-colors, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, rtl-language-support, sticky-post, threaded-comments, translation-ready
Requires at least: 4.9.6
Tested up to: WordPress 5.0
Requires PHP: 5.2.4

なお「Requires PHP」の記述は、WordPress 5.1に同梱されている「Twenty Seventeen」のREADME.txtにはない。テーマを公開したことがないのでわからないが、「Requires PHP」の記述はそれほど古くはないのだろう。

テーマの切り替え

WordPressのテーマの切り替えはswitch_theme関数で行う。5.5ではテーマを切り替える前に、 validate_theme_requirements関数を使ってテーマが現在のサーバー環境に対応しているか調べ、その結果、不適切な場合はテーマを切り替えない。

validate_theme_requirements関数では、 wp_get_theme関数でテーマの基礎情報を取得し、次にreadme.txtファイルがある場合はそのヘッダー情報を取得。テーマの基礎情報に「Requires at least」または「Requires PHP」がなく、readme.txtファイルのヘッダー情報にそれらの記述がある場合はヘッダー情報で補完している。

こうして取得した情報と、現在のWordPressとPHPのバージョンを比較し、不適切な場合はそのエラー情報(WP_Errorオブジェクト)を返し、問題がない場合はtrueを返している(テーマのstyle.cssとreadme.txtに対応バージョンの記述がない場合もtrueとなる)。

WordPress 5.5以降ではWordPressやPHPのバージョンによってテーマが切り替わらなくなることは意識しておきたい(管理画面上ではエラーメッセージが表示され、「有効化」ボタンが表示されない)。


最終更新 : 2020年08月12日 08:26


お勧め

get_the_post_thumbnail_caption(2018年5月27日 更新)

string get_the_post_thumbnail_caption( mixed $post = null )
投稿ページのサムネイル(アイキャッチ画像)キャプションを取得する。

wp_enqueue_style(2019年11月25日 更新)

void wp_enqueue_style( string $handle [ , string $src = false [ , array $deps = array() [ , string $ver = false [ , string $media = 'all' ] ] ] ] )
使用するスタイルシート(CSS)を出力用のキューに入れる。パラメータ$srcが指定された場合は、グローバル変数$wp_stylesに登録してから出力用のキューに入れる。

post_class(2018年5月27日 更新)

void post_class( [ string $class = '' [ , int $post_id = null ] ] )
投稿情報の種別に応じたクラス属性(class="post-?? post ...")を表示する。具体的なクラス名は、投稿ID(post-番号)、投稿種別(postやpage)、カテゴリー(category-名前)、タグ(tag-名前)などがある。これらクラス名に合わせたCSSを準備することで、投稿ページのユニークなデザインが表現可能になる。

get_header(2020年8月18日 更新)

void | false get_header( [ string $name = null [ , array $args = array() ] ] )
ヘッダパーツを記述したメインヘッダファイルheader.php(またはサブヘッダファイルheader-???.php)を読み込む。

get_the_excerpt(2018年5月27日 更新)

string get_the_excerpt( [ mixed $post = null$deprecated = '' ] )
投稿情報の抜粋記事を取得する。