概要
wp_theme_has_theme_json
関数は、テーマまたは親テーマに theme.json
ファイルがあるかどうかを調べるために使用されます。theme.json
は、テーマのスタイルや設定を定義するためのファイルであり、ブロックエディタ(Gutenberg)におけるテーマのカスタマイズ性を向上させます。この関数は、以下のような機能を実装する際によく使われます:
- テーマのカスタマイズオプションの確認
- ブロックスタイルの適用条件を設ける
- テーマ設定の適切な読み込み
- ユーザーが選択したスタイルの適用
- カスタムブロックの仕様を制御
- プラグインの互換性チェック
- エディタテンプレートの動的生成
- スタイルガイドの作成
構文
wp_theme_has_theme_json( $theme = null )
パラメータ
$theme
(string|WP_Theme): 対象のテーマの名前か WP_Theme オブジェクト。指定しない場合は現在のテーマが使われます。
戻り値
- (bool): 指定したテーマに
theme.json
が存在する場合は true、それ以外は false を返します。
関連する関数
使用可能なバージョン
wp_theme_has_theme_json
関数は WordPress 5.8 で導入されました。
コアファイルのパス
wp-includes/theme.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | 〇 |
after_setup_theme | 〇 |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: theme.jsonの存在確認
if ( wp_theme_has_theme_json() ) {
echo 'theme.jsonが存在します。';
} else {
echo 'theme.jsonが存在しません。';
}
このサンプルコードは、現在のテーマに theme.json
ファイルが存在するかを確認し、その結果を出力しています。
サンプルコード2: 特定のテーマでの使用確認
if ( wp_theme_has_theme_json( 'my-custom-theme' ) ) {
// カスタムテーマのための設定を実行
}
ここでは、特定のテーマ(my-custom-theme
)に theme.json
があるかどうかを確認しています。存在する場合にのみ何らかの処理を行います。
サンプルコード3: 親テーマの確認
$theme = wp_get_theme();
if ( wp_theme_has_theme_json( $theme->parent() ) ) {
echo '親テーマにtheme.jsonがあります。';
}
このコードは、現在のテーマの親テーマに theme.json
が存在するかをチェックし、その結果を出力します。
サンプルコード4: テーマ設定の適用
add_action( 'after_setup_theme', function() {
if ( wp_theme_has_theme_json() ) {
// theme.jsonの設定を読み込む処理
}
});
この例では、after_setup_theme
アクションフック内で theme.json
の存在を確認し、存在する場合にその設定を読み込む処理を追加しています。
サンプルコード5: プラグインとの互換性確認
add_action( 'plugins_loaded', function() {
if ( wp_theme_has_theme_json() ) {
// プラグインを有効化条件としてtheme.jsonの存在を確認
}
});
このサンプルでは、プラグインがロードされた後に、現在のテーマに theme.json
が存在するかをチェックしています。プラグインの機能をテーマの設定に基づいて調整する、といった用途に使えます。