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

説明

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_adjacent_post(2017年11月16日 更新)

object get_adjacent_post( [ bool $in_same_cat = false [ , mixed $excluded_categories = '' [ , bool $previous = true [ , string $taxonomy = 'category' ] ] ] ] )
現在の投稿記事に隣接する投稿記事を取得する。

wp_validate_boolean(2014年9月5日 更新)

bool wp_validate_boolean( mixed $var )
パラメータがブール値か評価する。

is_taxonomy_hierarchical(2018年5月27日 更新)

bool is_taxonomy_hierarchical( string $taxonomy )
タクソノミーに階層(親子)関係があるか調べる。

strip_shortcodes(2016年12月15日 更新)

string strip_shortcodes( string $content )
投稿記事からショートコードを取り除く。

content_url(2018年12月8日 更新)

string content_url( [ string $path = '' ] )
wp-contentディレクトリのURLを取得する。