この記事は最後に更新してから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_footer(2018年5月27日 更新)

void get_footer( [ string $name = null ] )
フッターパーツを記述したメインフッターファイルfooter.php(またはサブフッターファイルfooter-???.php)を読み込む。

wp_trim_words(2020年4月28日 更新)

string wp_trim_words( string $text [ , int $num_words = 55 [ , string $more = null ] ] )
文字列を指定の長さに揃える。

clean_taxonomy_cache(2018年5月27日 更新)

void clean_taxonomy_cache( string $taxonomy )
指定したタクソノミー関連のキャッシュをクリアする。

wp_get_custom_css_post(2019年11月14日 更新)

WP_Post wp_get_custom_css_post( [ string $stylesheet = '' ] )
カスタマイザーで追加したCSS情報を取得する。

get_archives_link(2019年5月9日 更新)

string get_archives_link( string $url, string $text [ , string $format = 'html' [ , string $before = '' [ , string $after = '' [ , bool $selected = false ] ] ] ] )
アーカイブページのリンクテキストを取得する。