• カミナリツイッターカミナリtwitter
  • カミナリフェイスブックカミナリfacebook
  • カミナリインスタグラムカミナリinstagram

山陰の情報を発信するカミナリ

ナビ

08

SEPTEMBER

ウェブFRIDAY 2023 / 9 / 8

WordPressの編集画面でブロックエディタを使用中かどうか調べるPHPコード

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のソースコードを読み解いて対応できます。
国家資格の基本情報処理技術者を保持。

この人が書いた他の記事を読む