この記事は最後に更新してから1年以上経過しています。

投稿情報からエディタータイプを判定する方法

説明

WordPressのプラグインは多種多様で、その中にはエディター(投稿編集画面)に関連するものが数多く存在する。そういったプラグインではクラッシックエディターのみに対応して存続させるか、ブロックエディターにきっちり対応するのか、選択肢は分かれるところだろう。いずれにせよエディタータイプを判別することは必要になると思われるため、その方法を検討した。

WordPressやプラグインのアップデートは任意であり、実際に動作している環境は多様化している。まずは一番オーソドックスと思われるWordPress 5.0.0環境で「Classic Editorプラグイン」の有無のケースを考えてみた。

「Classic Editorプラグイン」の設定内容は get_option関数で取得できる。ただし、0.5.0と1.0.0(現1.3.0)とでは振るまいが異なる。また「Classic Editorプラグイン」を無効化していてもget_option関数で値は取得できるため、「Classic Editorプラグイン」が有効かの判定も必要になる。「Classic Editorプラグイン」の設定内容でエディタータイプを判定するのは現実的ではないように思える。

そこで発想を変えて「新規追加」時に実行されるpost-new.phpファイルを見てみる。post-new.phpファイルではエディターの振り分け時に次のような判定を行っている。

if ( apply_filters( 'replace_editor', false, $post ) !== true ) {
	if ( use_block_editor_for_post( $post ) ) {
		// block editor
	} else {
		// classic editor
	}
}

はじめにreplace_editorフィルター(4.9.0で追加)にて独自エディターが適用されているか調べ、適用されていない場合は use_block_editor_for_post関数(5.0.0で追加)を使ってブロックエディターかどうかを判定する流れとなる。これであれば「Classic Editorプラグイン」の有効・無効を気にすることなく、エディタータイプを判定できる。5.0.0より前のバージョンを考慮するなら、use_block_editor_for_post関数を呼ぶ前にfunction_exists関数で有無を確認することになる。

とりあえず基本的な判定方法はこれでいけるだろう。悩ましいWordPress 4.9.8+「Gutenburgプラグイン」環境は少し様子見で。


最終更新 : 2018年12月13日 16:34


お勧め

get_block_editor_settings(2021年8月17日 更新)

array get_block_editor_settings( array $custom_settings, WP_Block_Editor_Context $block_editor_context )
ブロックエディター設定内容を取得する。

urldecode_deep(2019年3月13日 更新)

mixed urldecode_deep( mixed $value )
変数内の文字列についてURLデコード処理を行う。

user_can(2018年5月27日 更新)

bool user_can( mixed $user, string $capability )
ユーザの権限を調べる。

get_locale(2019年1月15日 更新)

string get_locale( )
現在のロケール情報('ja'や'en_US'など)を取得する。

get_comment_time(2023年4月3日 更新)

string get_comment_time( [ string $format = '' [ , bool $gmt = false [ , bool $translate = true [ , int | WP_Comment $comment_id = 0 ] ] ] ] )
コメント投稿日時を取得する。