WordPress:Gutenberg(ブロックエディタ)を無効化する方法

WordPress:Gutenberg(ブロックエディタ)を無効化する方法

Gutenberg(ブロックエディタ)を無効化する場合はとりあえずプラグイン「Classic Editor」を入れるぐらいの認識だったのですが、フックを使って限定的に無効とかもできるみたいなので備忘録です。

※以下で紹介している方法は、WordPress Ver 5.0.0 で確認等行ったものです。

※以下で紹介している方法を以前のバージョンで使用する場合は、フックをそれぞれgutenberg_can_edit_postgutenberg_can_edit_post_typeにする必要があります。

WordPress:Gutenberg(ブロックエディタ)を無効化する方法 目次

  1. 全体的にGutenbergを無効化
  2. 特定のユーザーで無効化
  3. 特定の投稿タイプで無効化
  4. 特定の投稿タイプ以外で無効化
  5. 特定の投稿IDで無効化
  6. 特定の投稿ID未満で無効化
  7. 特定のスラッグで無効化

1. 全体的にGutenbergを無効化

全体的にGutenbergを無効化を無効化したい場合は、functions.phpに下記のように記述します。

functions.php

add_filter( 'use_block_editor_for_post', '__return_false' );

目次へ

2. 特定のユーザーで無効化

Gutenbergを使いたいユーザーとそうでないユーザーがいた場合は、下記のように条件分岐を組み合わせれば特定のユーザーのみ無効化させることができます。

functions.php

// ユーザーIDが「1」の場合はGutenbergが無効化
if ( $current_user->ID === 1 ) {
  add_filter( 'use_block_editor_for_post', '__return_false' );
}

// ユーザー名が「admin」の場合はGutenbergが無効化
if ( $current_user->user_nicename === 'admin' ) {
  add_filter( 'use_block_editor_for_post', '__return_false' );
}

目次へ

3. 特定の投稿タイプで無効化

特定の投稿タイプでGutenbergを無効化したい場合は、functions.phpに下記のように記述します。
このサンプルコードは「固定ページ」のみ無効化されるようになります。

functions.php

add_filter( 'use_block_editor_for_post_type', 'disable_block_editor', 10, 2 );
function disable_block_editor( $use_block_editor, $post_type ) {
  if ( $post_type === 'page' ) return false;
  return $use_block_editor;
}

目次へ

4. 特定の投稿タイプ以外で無効化

上とは逆に特定の投稿タイプ以外で無効化したい場合は、functions.phpに下記のように記述します。
このサンプルコードは「固定ページ」以外の投稿タイプで無効化されるようになります。

functions.php

add_filter( 'use_block_editor_for_post_type', 'disable_block_editor', 10, 2 );
function disable_block_editor( $use_block_editor, $post_type ) {
  if ( $post_type !== 'page' ) return false;
  return $use_block_editor;
}

目次へ

5. 特定の投稿IDで無効化

特定の投稿IDのときに無効化したい場合は、functions.phpに下記のように記述します。
このサンプルコードは「3」の投稿IDを持つものだけ無効化されるようになり、例えば単純にWordPressをインストールした直後とかであれば、デフォルトで用意されている「固定ページ > プライバシーポリシー」だけが無効化されているのを確認できます。

functions.php

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

目次へ

6. 特定の投稿ID未満で無効化

古い投稿はこれまでのエディタを使用し、比較的新しい投稿だけでGutenbergを使用したい場合は、functions.phpに下記のように記述することで特定の投稿ID未満で無効化させることで対応できます。
このサンプルコードは投稿IDが「100未満」の場合に無効化されるものになります。

functions.php

add_filter( 'use_block_editor_for_post', 'disable_block_editor_for_post', 10, 2 );
function disable_block_editor_for_post( $use_block_editor, $post ) {
  if ( $post->ID < 100 ) return false;
  return $use_block_editor;
}

より厳密に指定する

上のコードで特定の投稿ID未満で無効化することはできますが、これだと投稿タイプ関係なく「100未満」の場合すべてで無効化されてしまうので、自分は「投稿」だけに適用したかったつもりでも「固定ページ」などのその他投稿タイプにも適用されてしまいます。
「投稿」で且つIDが100未満の場合であれば、下記のように併せて投稿タイプも条件に加えるとより厳密に無効化する投稿を指定できます。

functions.php

add_filter( 'use_block_editor_for_post', 'disable_block_editor_for_post', 10, 2 );
function disable_block_editor_for_post( $use_block_editor, $post ) {
  if ( $post->ID < 100 && $post->post_type === 'post' ) return false;
  return $use_block_editor;
}

目次へ

7. 特定のスラッグで無効化

特定のスラッグのときに無効化したい場合は、functions.phpに下記のように記述します。
このサンプルコードは「privacy-policy」というスラッグを持つものだけ無効化されるようになります。

functions.php

add_filter( 'use_block_editor_for_post', 'disable_block_editor_for_post', 10, 2 );
function disable_block_editor_for_post( $use_block_editor, $post ) {
  if ( $post->post_name === 'privacy-policy' ) return false;
  return $use_block_editor;
}

より厳密に指定する

上のコードでも無効化することができますが、これだと投稿タイプ関係なく「privacy-policy」というスラッグを持つものすべてで無効化されてしまいます。
「6. 特定の投稿ID未満は無効化」で紹介したときと同様で、下記のように併せて投稿タイプも条件に加えるとより厳密に無効化する投稿を指定できます。

functions.php

add_filter( 'use_block_editor_for_post', 'disable_block_editor_for_post', 10, 2 );
function disable_block_editor_for_post( $use_block_editor, $post ) {
  if ( $post->post_name === 'privacy-policy' && $post->post_type === 'page' ) return false;
  return $use_block_editor;
}

目次へ

Close the search window,
please press close button or esc key.