08
SEPTEMBER
ウェブFRIDAY 2023 / 9 / 8
WordPressの編集画面でブロックエディタを使用中かどうか調べるPHPコード
Text by Hiroyuki Matsumoto
WordPressの管理画面内でヘッダ情報を出力したい際に、現在の編集画面がブロックエディタかどうかを調べたいというケースがあり調べました。
冒頭の状態、例えば functions.php が動作している際や、管理画面に入った初期段階の admin_initフックが呼び出された時点ではまだ状態が取得できません。
管理画面でheadタグ内の処理を開始する admin_headフック時点以降で初めて状態が取得できるようになります。
<?php add_action('admin_head', function(){ $screen = get_current_screen(); if($screen->is_block_editor){ // ここにブロックエディタ時に実行する処理を書く } });
get_current_screen関数はグローバル変数の $current_screen を呼び出しているだけですが、admin_head以降でないとNULLとなります。
下記に変数をvar_dumpで出力した際の例を残しておきます。
object(WP_Screen)#14979 (18) { ["action"]=> string(0) "" ["base"]=> string(4) "post" ["columns":"WP_Screen":private]=> int(0) ["id"]=> string(4) "menu" ["in_admin":protected]=> string(4) "site" ["is_network"]=> bool(false) ["is_user"]=> bool(false) ["parent_base"]=> NULL ["parent_file"]=> NULL ["post_type"]=> string(4) "menu" ["taxonomy"]=> string(0) "" ["_help_tabs":"WP_Screen":private]=> array(0) { } ["_help_sidebar":"WP_Screen":private]=> string(0) "" ["_screen_reader_content":"WP_Screen":private]=> array(0) { } ["_options":"WP_Screen":private]=> array(0) { } ["_show_screen_options":"WP_Screen":private]=> NULL ["_screen_settings":"WP_Screen":private]=> NULL ["is_block_editor"]=> bool(true) }
TEXT by
松本 博之(まつもとひろゆき)
1978年、鳥取県米子市生まれ。
株式会社マジックワード WEBシステムの開発・運用を担当。
WordPressの実績多数。表面的な使用方法を把握するだけでなく、WordPressのソースコードを読み解いて対応できます。
国家資格の応用情報処理技術者をなんとなくとりました。