プラグインからブロックエディタ用にスタイルを追加する方法

公開日:2022(令和4)年10月29日/最終更新日:

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています



テーマでエディタ用(ブロックエディタ用)にスタイルを適用する方法は、自作テーマで使っていて知っていたのですが、プラグインから、プラグインフォルダ内に設置したCSSファイルをブロックエディタに適用させようとして苦労したので、サンプルコードメモとして残しておきます。

本ページで掲載しているコードは、以下に了承した上で使用ください

  • コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
  • コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
  • コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
  • コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
  • 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
  • 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)

まず、テーマからブロックエディタにスタイルを適用させる場合には、以下のコードのようにブロックエディタ用に作成したeditor-style.cssを読み込ませて、editor-styleにスタイルコードを書けば、ブロックエディタ内に反映させる方法が一般的ですね。

/***** ブロックエディタ用にスタイルを追加 *****/
function sample_editor_style_init(){
	// ブロックエディタ用スタイル機能をテーマに追加
	add_theme_support( 'editor-styles' );
	// ブロックエディタ用CSSの読み込み
	add_editor_style(trailingslashit( get_stylesheet_directory_uri() ) .'editor-style.css');

}
add_action( 'after_setup_theme', 'sample_editor_style_init');

コードにも注釈入れてますが、以下の流れで適用されるようになります。

  1. テーマでエディタ用のスタイルを使えるようにする
  2. ブロックエディタ用のCSS(editor-style.css)をエンキューする
  3. after_setup_themeでテーマの有効化と同時にCSSが適用されるようにする

でもこれ、独自プラグインを作って、このコードを使っても、ブロックエディタへ適用できないんです。

そこでプラグインから、プラグインフォルダ内のCSSをブロックエディタに適用する場合には、以下のように記述します。

ファイルはプラグインフォルダ直下に置き、名前を「custom-editor-style.css」としています

/* プラグインからエディタにCSS反映させるコードサンプル */
function sample_enqueue_editor_styles() {
  wp_enqueue_style('my-plugin-block-editor',plugin_dir_url( __FILE__ ) . 'custom-editor-style.css',array(),'1.0.0');
}
add_action(  'enqueue_block_editor_assets', 'sample_enqueue_editor_styles');

要は、「enqueue_block_editor_assets」というアクションフックを使って、プラグインフォルダ内のスタイルをエンキューするということなんですね。

これだと、ブロック用とフロントエンド用に重複してスタイルコードを書かなければなりません。

そこで、どうせ同じようにスタイルをエンキューしてるのですから、もう一行追加して、フロントにも適用させるようにしておけば、コードも少なくて済みます。

/* プラグインからエディタとフロントにCSS反映させるコードサンプル */
function enqueue_editor_styles() {
  wp_enqueue_style('my-plugin-block-editor',plugin_dir_url( __FILE__ ) . 'custom-editor-style.css',array(),'1.0.0');
}
add_action(  'enqueue_block_editor_assets', 'enqueue_editor_styles'  );
add_action(  'wp_enqueue_scripts', 'enqueue_editor_styles'  );

分かってしまえばこんな簡単なコードで?とびっくりしますが、いろいろ調べてもなかなかこれだ!というページがなかったり、旧エディタ用のものだったりしましたので、備忘録を兼ねて公開しておきます。

誰かの参考になれば...。

, , , , , , , ,



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Block Theme Customize | Personal WP Customization Notes (PWCN)
ブロックテーマでサイトの背景画像を設定する5つの方法