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

説明

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_post_format_strings(2011年9月12日 更新)

string get_post_format_strings( )
投稿フォーマット名の一覧を取得する。

get_allowed_mime_types(2012年12月20日 更新)

array get_allowed_mime_types( )
有効なMIMEタイプを取得する。

get_category_parents(2018年5月27日 更新)

mixed get_category_parents( int $id [ , bool $link = false [ , string $separator = '/' [ , bool $nicename = false [ , array $deprecated $visited = array() ] ] ] ] )
親カテゴリー名を含んだカテゴリー名を取得する。

wp_remote_post(2017年5月23日 更新)

mixed wp_remote_post( string $url [ , array $args = array() ] )
POSTメソッドを送信する。

set_url_scheme(2018年5月27日 更新)

string set_url_scheme( string $url, string $scheme = null )
URLに適正なスキーマをセットする。