TL;DR
hoge,fugaってスラッグの固定ページでエディタを非表示にしたければ以下のようにします
add_filter('use_block_editor_for_post',function($use_block_editor,$post){
if($post->post_type==='page'){
if(in_array($post->post_name,['hoge','fuga'])){
remove_post_type_support('page','editor');
return false;
}
}
return $use_block_editor;
},10,2);
解説
WPの記事編集画面はwp-admin/post.php
が?action=edit
をつけて呼ばれます
ブロックエディタが有効な投稿であればwp-admin/edit-form-blocks.php
が読み込まれますが
このwp-admin/edit-form-blocks.php
内ではエディタ部分だけを無効化する手段がないため
まずuse_block_editor_for_post()
がfalse
を返すようにしてブロックエディタを無効にします
use_block_editor_for_post()
の戻り値は
use_block_editor_for_post
フィルタフックを通されるのでこれを利用します
add_filter('use_block_editor_for_post',function($use_block_editor,$post){
if($post->post_type==='page'){
if(in_array($post->post_name,['hoge','fuga'])){
return false;
}
}
return $use_block_editor;
},10,2);
これでhoge,fugaでブロックエディタを無効化できました
するとwp-admin/edit-form-blocks.php
の代わりに
wp-admin/edit-form-advanced.php
が読み込まれるようになり
旧エディタで記事編集画面が開くようになります
旧エディタであればエディタ部分だけを無効化することができます
先のフィルタ処理のついでにremove_post_type_support()
してエディタを無効化しましょう
add_filter('use_block_editor_for_post',function($use_block_editor,$post){
if($post->post_type==='page'){
if(in_array($post->post_name,['hoge','fuga'])){
remove_post_type_support('page','editor');
return false;
}
}
return $use_block_editor;
},10,2);
以上です