ワードプレスのwp_theme_has_theme_json関数の使用方法・解説

概要

wp_theme_has_theme_json 関数は、テーマまたは親テーマに theme.json ファイルがあるかどうかを調べるために使用されます。theme.json は、テーマのスタイルや設定を定義するためのファイルであり、ブロックエディタ(Gutenberg)におけるテーマのカスタマイズ性を向上させます。この関数は、以下のような機能を実装する際によく使われます:

  1. テーマのカスタマイズオプションの確認
  2. ブロックスタイルの適用条件を設ける
  3. テーマ設定の適切な読み込み
  4. ユーザーが選択したスタイルの適用
  5. カスタムブロックの仕様を制御
  6. プラグインの互換性チェック
  7. エディタテンプレートの動的生成
  8. スタイルガイドの作成

構文

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 が存在するかをチェックしています。プラグインの機能をテーマの設定に基づいて調整する、といった用途に使えます。

この関数について質問する


上の計算式の答えを入力してください