【Advanced Editor Tools】新規記事だけクラシックブロックを使えなくする方法

Advanced Editor Tools:新規記事だけクラシックブロックを使えなくする方法

クラシックエディタからブロックエディタに移行したときの備忘録です。

  • 既存記事(ブロックエディタ変更前)はクラシックブロックで編集
  • 新規記事は、ブロックエディタで編集

できるようにするためのメモです。

状況・前提

2016年頃に制作したクライアントのWordPressサイト(オリジナルテーマ)をリニューアルしました。

それまでクラシックエディタで運用していましたが、クライアントと相談のうえ、このタイミングでブロックエディタに移行することにしました。

クライアントがクラシックエディタに慣れているため、既存記事はクラシックブロック(TinyMCEベースの旧エディタ相当)のまま残して、引き続きクラシックスタイルで編集できる状態にすることに。

クラシックエディタ
クラシックエディタ
クラシックブロック
クラシックブロック

でも、新規記事はデフォルトではブロックエディタにしたい。

ブロックエディタ
ブロックエディタ

今後もそのサイトは運用されるので、今後のことも考え、ブロックエディタを使ってもらうことにしました。

手順

クラシックエディタで書いた過去記事は「クラシックブロック」で、新規作成は「ブロックエディタ」にする手順を紹介します。

1. 「Advanced Editor Tools」のプラグインをインストール、有効化

「Advanced Editor Tools」のプラグインをインストールし、有効化します。

2. 「Advanced Editor Tools」の設定を変更する

管理画面 → 設定 → Advanced Editor Tools を開きます。

「クラシック版の段落もしくはクラシックブロックをデフォルトのブロックにする(ハイブリッドモード)」のチェック外します。

基本的にこれで設定OKです。

これで反映されない場合は、下記コードを追加して対応できます。

設定がうまくいかないときは、functions.php に下記コードを追加

/**
 * Classic Paragraph を「新規追加」だけできないようにする
 */
add_filter( 'allowed_block_types_all', function( $allowed_blocks, $editor_context ) {

	if ( empty( $editor_context->post ) ) {
		return $allowed_blocks;
	}

	$deny_blocks = array(
		'tadv/classic-paragraph',
	);

	if ( true === $allowed_blocks ) {
		$registered_blocks = WP_Block_Type_Registry::get_instance()->get_all_registered();
		$allowed_blocks = array_keys( $registered_blocks );
	}

	return array_values( array_diff( $allowed_blocks, $deny_blocks ) );

}, 10, 2 );

結果確認

上記設定で、下記のように変更されます。

  • 新規記事:ブロック追加メニューにクラシック段落が表示されない
  • 既存記事:クラシックブロックのまま編集・表示できる
  • クラシックエディタプラグインとの共存:問題なし

既存記事(クラシックブロック)での編集

クラシックブロックの途中へのテキストや画像の追加は、基本的にクラシックブロックとして扱われます。

最下部に追加した場合は、ブロックエディタとして扱われます。

ただし改行の位置によってはクラシックブロック内に追加されることもあるため、様子を見ながら調整してみてください。

追加後にブロックエディタ用のサブツールが表示されていればブロックエディタです。

新規記事だけクラシックブロックを使えなくする:ブロックエディタのツール
ブロックエディタのツール(サルの顔はSnow Monkey Editor)

新規作成でクラシックブロックを使いたい場合

新規記事作成時にクラシックブロックを追加したい場合は、挿入ボックスで「クラシック」と検索して、挿入すれば、クラシックブロックを利用できます。

まとめ

設定についてですが、まずは「Advanced Editor Tools」の設定画面でハイブリッドモードをOFFにするだけで解決するか試してみてください。これだけで新規記事がブロックエディタになるケースもあります。

それでもクラシックブロックが出てきてしまう場合は、functions.php にコードを追加して制御してみてください。

どちらの方法も、既存記事のクラシックブロックはそのまま残るので安心してください。

私がはじめに設定したときは、OFFだけでは反映されず、functions.phpのコードと併用しました。時間が経過してfunctions.phpのコードを消すと(プラグインの設定はOFF)、設定は生きたままでした。
状況により使い分けてみてください。

クラシックエディタに慣れている状態で、ブロックエディタに移行すると、はじめは抵抗感が出ることが多いです。

個人利用なら、自分のペースにあわせて進めていけばいいですが、クライアントのサイトでクラシックエディタからブロックエディタに変更する場合は、はじめはどちらも使えるようにしておくのがいいかもしれません。