classic editorプラグインを試してみた

説明

WordPress 5.0 beta1のリリースにあわせて旧エディター環境を実現できる「classic editor」(バージョン0.5.0)が公開された。自分が公開しているプラグインの一部が旧エディター環境に依存していることもあり、さっそく試してみた。

2つのモードが選択できる

WordPress 5.0 beta1の投稿編集画面は新エディターのみとなっており、そのままでは旧エディターが使用できない。そこで登場するのがclassic editorプラグインである。このプラグインをインストール・有効化すると、「設定」-「投稿設定」に「旧エディター設定」という項目が追加される。

追加された「旧エディター設定」

ここで「Replace the Block editor with the Classic editor.」を選択すると旧エディターのみを使用する状態に、「Use the Block editor by default and include optional links back to the Classic editor.」を選択するとWordPress 4.9.8+Gutenbergプラグインと同じように新エディターと旧エディターを併用する状態となる。新エディターに移行しにくいサイトを持っている身としてはとても助かる機能である。

新旧エディターを切り替えるタイミング

classic editorプラグインがどのようにエディターを切り替えるているのか気になったので、ソースコードを軽く覗いてみた。

add_action( 'plugins_loaded', 'classic_editor_init_actions' );

classic editorプラグインは冒頭でplugins_loadedアクションをフックしている。このアクション、有効になっているプラグインをすべて読み込んだ直後に実行されるアクションで、 add_action関数ではプライオリティが省略されているので、この場合は10となる。エディター関連で何らかの処理を行う必要があるなら、このタイミングは覚えておきたい。

次にplugins_loadedアクションで実行されるclassic_editor_init_actions関数の中身を見ていこう。

if ( has_filter( 'replace_editor', 'gutenberg_init' ) ) {
	// Gutenberg is installed and activated.
	$gutenberg = true;
}

if ( version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' ) ) {
	// Block editor.
	$block_editor = true;
}

新エディター環境の判定は、まずGutenbergプラグインが有効になっているかを調べ、その後でWordPressのバージョンが5.0 beta以降かを調べている。「旧エディター設定」のところでも記載されているように、WordPressのバージョン5.0では新エディターのことを「Block editor」と呼んでいるようだ。

$replace = ( get_option( 'classic-editor-replace' ) !== 'no-replace' );

if ( $block_editor && ( $replace || isset( $_GET['classic-editor'] ) ) ) {
	// TODO: consider disabling other block editor functionality.
	add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );
}

続いて「旧エディター設定」を get_option関数で取得し、'no-replace'と比較している。この条件式、「=== 'replace'」の方が自然なのではと思いつつ次行に移る。

「Block editor」が有効な状態で旧エディターに切り替える場合に、use_block_editor_for_post_typeフィルターで返り値にfalseを返すようにしている。use_block_editor_for_post_typeフィルターは管理画面向けに5.0で追加された同名の関数で実行されるフィルターで、旧エディターへの切り替えだけならこれだけで実現できる。これに対し、Gutenbergプラグインが有効な状態で旧エディターに切り替える場合は、関連する複数のフィルターやアクションを取り除いている。

classic editorプラグインの更新も注目

自分が公開しているプラグインには新エディター環境で何等かの対応が必要なものがある。プラグインのウィジェット出力部分でエディターを判定する場合は次のような感じだろう。

$editor = 'classic';
if ( has_filter( 'replace_editor', 'gutenberg_init' ) ) {
	$editor = 'gutenberg';
} elseif ( version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' ) &&
	use_block_editor_for_post_type( $post_type ) ) {
	$editor = 'block';
}

今回試したclassic editorプラグインはバージョン0.5.0であり、WordPress 5.0本体も正式リリースまでに内容が変わる可能性がある。その点は留意いただきたい。


最終更新 : 2018年10月31日 10:31

お勧め

wp_login_url(2018年5月27日 更新)

string wp_login_url( [ string $redirect = '' [ , bool $force_reauth = false ] ] )
ログインURLを取得する。

path_join(2014年7月9日 更新)

string path_join( string $base, string $path )
パス名を連結する。

wp_update_user(2014年5月20日 更新)

mixed wp_update_user( mixed $userdata )
ユーザ情報を更新する。

the_excerpt_rss(2014年11月16日 更新)

void the_excerpt_rss( )
RSSフィード用の抜粋記事を出力する。

is_preview(2018年7月4日 更新)

bool is_preview()
要求がプレビューか調べる。