WordPressテーマ開発において、CSSやJavaScriptの適切な読み込みは重要な要素です。この記事では、特にブロックテーマ(Block Theme)におけるスクリプト・スタイルの読み込み方法と、Gutenberg(ブロックエディター)対応の方法について詳しく解説します。
基本:CSS・JSの読み込み(キャッシュ対策付き)
以下のコードは、テーマの functions.php に記述して使用します。更新日時をバージョンとして指定し、キャッシュを無効化するテクニックを使っています。
function mytheme_enqueue_assets() { $theme_path = get_stylesheet_directory(); $theme_uri = get_stylesheet_directory_uri(); // フロント用CSS $style_path = $theme_path . '/style.css'; if (file_exists($style_path)) { wp_enqueue_style( 'mytheme-style', $theme_uri . '/style.css', array(), filemtime($style_path) ); } // フロント用JS(jQuery依存あり) $script_path = $theme_path . '/main.js'; if (file_exists($script_path)) { wp_enqueue_script( 'mytheme-main', $theme_uri . '/main.js', array('jquery'), filemtime($script_path), true ); }}add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets');PHPGutenberg(ブロックエディター)用のCSS・JS読み込み
ブロックエディターにも専用のCSSやJSを読み込むことが可能です。
function mytheme_enqueue_block_editor_assets() { $theme_path = get_stylesheet_directory(); $theme_uri = get_stylesheet_directory_uri(); // エディター用CSS $editor_style = $theme_path . '/editor-style.css'; if (file_exists($editor_style)) { wp_enqueue_style( 'mytheme-editor-style', $theme_uri . '/editor-style.css', array(), filemtime($editor_style) ); } // エディター用JS $editor_js = $theme_path . '/editor.js'; if (file_exists($editor_js)) { wp_enqueue_script( 'mytheme-editor-script', $theme_uri . '/editor.js', array('wp-blocks', 'wp-dom-ready', 'wp-edit-post'), filemtime($editor_js), true ); }}add_action('enqueue_block_editor_assets', 'mytheme_enqueue_block_editor_assets');PHPtheme.json の活用
ブロックテーマでは、theme.json によって色・タイポグラフィ・レイアウトなどを制御します。
例:theme.json
{ "version": 2, "settings": { "color": { "palette": [ { "slug": "primary", "color": "#0073aa", "name": "Primary" } ] }, "typography": { "fontSizes": [ { "slug": "large", "size": "2rem", "name": "Large" } ] } }, "styles": { "elements": { "h1": { "typography": { "fontSize": "2.5rem" } } } }}JSONGutenbergブロック制御(例:特定ブロックを無効化)
ブロックエディター用の editor.js に以下のようなコードを記述すれば、特定のブロックを無効化することも可能です。
// editor.jswp.domReady(() => { wp.blocks.unregisterBlockType('core/cover');});JavaScript推奨ディレクトリ構成
your-theme/├─ style.css├─ theme.json├─ functions.php├─ main.js├─ editor-style.css├─ editor.js└─ templates/JavaScriptまとめ
ブロックテーマを使ったモダンなWordPressテーマ開発には、theme.jsonとエディター対応が不可欠です。本記事の方法をベースに、自分だけの高機能なブロックテーマを構築してみてください!