Before Gutenberg – 投稿別に既存のエディターを有効にする

もうWordPress 5.0がリリースされたので、Beforeでもなんでもなくなってしまったが、連載タイトルを変えるわけにはいかないので、そのままにする。WordPress 5.0からGutenbergことブロック・エディターがデビューとなったのだが、まだ対応が終わっていない方も多いだろう。そこで、今回は特定の投稿タイプおよび投稿だけクラシックエディターにする方法を紹介する。

Classic Editorプラグインは何をしているのか

さて、Classic Editorプラグインを入れておこうというアドバイスを以前お伝えしたが、実はニュースをお伝えした当初と異なり、現在のClassic Editorは非常に薄いプラグインとなっている。何をしているかというと、ブロックエディターのオン・オフを切り替えているだけなのだ。

前はたくさんあったJSがいまは1つだけ。

筆者はてっきり以前のエディターをClassic Editorに移植して取り除いたのかと思っていたが、そんなことはぜんぜんなかった。途中から方針が変わったように思うので、おそらく後方互換性を保つ意味でもしばらくは残るだろう。

まとめると、前言撤回のようで非常に心苦しいのだが、ある程度開発経験がある方は別にClassic Editorを入れなくてもいいんじゃない……のかな……。実際、筆者は試しにWooCommerceサイトをWordPress 5.0にアップデートしてみたのだが、WooCommerce側で対応済みのようだった。

特定の投稿タイプだけをクラシックエディターにする

それではさっそくやってみよう。まず、FAQというカスタム投稿タイプがまだ微妙にブロックエディターに対応できていないとする。投稿も固定ページも問題ないのだが、FAQだけダメなケースだ。

たとえば、このように、特定のメタボックスが動作しないなど。

この場合、use_block_editor_for_postフィルターを利用すればよい。

add_filter( 'use_block_editor_for_post', function( $use_block_editor, $post ) {
	if ( 'faq' === $post->post_type ) {
		$use_block_editor = false;
	}
	return $use_block_editor;
}, 10, 2 );

特定の投稿だけクラシックエディターを使いたい

さて、たとえばニュースサイトのようなものを運用しており、「新規に投稿する分には問題ないが、古い投稿はクラシックエディターを使いたい」というケースを考えてみよう。たとえば、投稿IDが3,000より古いとか、そのような条件が適用できる。

add_filter( 'use_block_editor_for_post', function( $use_block_editor, $post ) {
	if ( 3000 >= $post->ID ) {
		// 3000以下ならfalse
		$use_block_editor = false;
	}
	return $use_block_editor;
}, 10, 2 );

タクソノミーなどなど、色々な条件が考えられる。

クラシックエディターはデフォルトでブロックエディターのオン・オフを行ってくれるが、カスタマイズを施したサイトだと、たくさんのカスタム投稿タイプがあったりするだろう。上記のフィルターを有効に活用し、楽しいWordPress編集ライフを送って欲しい。

“Before Gutenberg – 投稿別に既存のエディターを有効にする”への1件の反応

  • 高橋 文樹

    サンプルコードにタイポがあったので修正しておきました。

    add_filter( 'use_block_editor_for_post', function( $user_block_editor, $post ) {
    // 引数の名前が間違ってた
    add_filter( 'use_block_editor_for_post', function( $use_block_editor, $post ) {
    

高橋 文樹 へ返信するコメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください