ブロックテーマは特殊な場合を除き、以下の流れでスタイルが適用される仕組みになっています(下に行くほど優先されます)。
- WordPress本体の基本的なスタイル
- 有効化しているブロックテーマのtheme.jsonに設定されているスタイル
- サイトエディターで設定したスタイル
- プラグインなどで出力されるスタイル
- 有効化しているブロックテーマのstyle.cssなどのファイルに記述されているスタイル
- HTMLタグにインライン(style=””)で直書きされているスタイル
特殊な場合というのは、2~5についてコードで特別な優先順などを指定して読み込んでいるケースで、大抵はこの順序になります。
ブロックテーマはその名の通り、通常の投稿や固定ページと同じようにブロックエディターを使ってページ内のコンテンツの配置をしたり、サイト全体のスタイルをボタンをポチポチするだけで指定できたりするので、旧来のクラシックテーマと比べると比較的初心者でもサイトの見栄えが変えられて便利である反面、少し知識を得てtheme.jsonの編集を覚えて変更した後に「あれ?編集したはずなのに適用されない、何で?」となることがあります。
これは先ほど示した通り、適用される順番があるからで、theme.jsonの指定値は比較的弱い立場にあるために発生し、大抵の場合、後からサイトエディターでポチポチ指定したものが覆いかぶさってるということがほとんどなのですが、一旦サイトエディターで設定したものを画面上で探すのは私の経験測として結構大変な印象があります。
本ページでは、サイトエディターで設定されている内容をパッと確認できるようにショートコードで出力できるようにするコードを紹介します。下書きで作成した投稿にショートコードを挿入するだけで、どの項目にサイトエディターから設定がされているのかが見えて便利ですよ。
サイトエディターの設定内容を表示するショートコード
以下のコードを有効化しているブロックテーマのfunctions.phpへ追加します。
/***** ブロックテーマのグローバルスタイルから値を取得 *****/
function pwcn_get_custom_global_styles_raw() {
// DBから「そのテーマのグローバルスタイル」の投稿を取得
$args = array(
'post_type' => 'wp_global_styles',
'post_status' => 'publish',
'posts_per_page' => 1,
'tax_query' => array(
array(
'taxonomy' => 'wp_theme',
'field' => 'slug',
'terms' => get_stylesheet(), // 現在のテーマ(子テーマ含む)
),
),
);
$styles_post = get_posts($args);
if ( ! empty($styles_post) ) {
// post_content に保存されている JSON をデコードして配列にする
$decoded_data = json_decode($styles_post[0]->post_content, true);
return $decoded_data;
}
return array();
}
/*** サイトエディターで設定されている値を表示するショートコード ***/
function pwcn_get_all_global_styles_info() {
/* DBからグローバルスタイルの情報を取得 */
$raw_data = pwcn_get_custom_global_styles_raw();
// データが空、または配列でない場合のチェック
if ( empty( $raw_data ) || !is_array( $raw_data ) ) {
return '設定データ(サイトエディターでの保存値)が見つかりません。一度サイトエディターで保存を行ってください。';
}
// 特定の主要な情報を抽出
$output = '<h3>グローバルスタイル設定状況</h3>';
$output .= '<ul>';
// 背景画像URL
if ( isset( $raw_data['styles']['background']['backgroundImage']['url'] ) ) {
$output .= '<li><strong>背景画像URL:</strong> ' . esc_url( $raw_data['styles']['background']['backgroundImage']['url'] ) . '</li>';
}else{
$output .= '<li><strong>背景画像URL:</strong>サイトエディター上での変更がないため値はありません</li>';
}
// 背景画像ID
if ( isset( $raw_data['styles']['background']['backgroundImage']['id'] ) ) {
$output .= '<li><strong>背景画像のID:</strong> ' . esc_html( $raw_data['styles']['background']['backgroundImage']['id'] ) . '</li>';
}else{
$output .= '<li><strong>背景画像のID:</strong>サイトエディター上での変更がないため値はありません</li>';
}
// 背景色
if ( isset( $raw_data['styles']['color']['background'] ) ) {
$output .= '<li><strong>背景色:</strong> ' . esc_html( $raw_data['styles']['color']['background'] ) . '</li>';
}else{
$output .= '<li><strong>背景色:</strong>サイトエディター上での変更がないため値はありません</li>';
}
// テキスト色
if ( isset( $raw_data['styles']['color']['text'] ) ) {
$output .= '<li><strong>テキスト色:</strong> ' . esc_html( $raw_data['styles']['color']['text'] ) . '</li>';
}else{
$output .= '<li><strong>テキスト色:</strong>サイトエディター上での変更がないため値はありません</li>';
}
$output .= '</ul>';
// サイトエディター上で設定された全データを確認するためのアコーディオン
$output .= '<details style="margin-top:20px; padding:10px; border:1px solid #ccc;">';
$output .= '<summary style="cursor:pointer;">生データ(JSON構造)を確認する</summary>';
$output .= '<pre style="background:#f4f4f4; padding:10px; overflow:auto; max-height:400px;">';
$output .= esc_html( print_r( $raw_data, true ) );
$output .= '</pre></details>';
return $output;
}
add_shortcode('theme-setting-list', 'pwcn_get_all_global_styles_info');
そして「theme-setting-list」というショートコードを投稿編集画面に挿入してプレビューすると、下図のような形で表示されます。

サンプルとして「背景画像のURL」「背景画像のID」「テキストの色」を表示するようにしていて、「生データを確認する」をクリックすると、現在サイトエディターで設定されて保存されている情報が一覧で表示できます。
コード中の「背景画像のURL」の[](角括弧)の構造と、生データの[]の構造を比較して適切に編集すれば、いろいろな情報が設定されているのかどうか、設定されている値は何かを簡単に知ることができます。












コメントを残す