WordPress:Gutenbergでデフォルト表示されているブロックを非表示にする方法

WordPress:Gutenbergでデフォルト表示されているブロックを非表示にする方法

Gutenbergのデフォルトで用意されているブロックを非表示にする方法です。
正確には表示させたいものを再度設定するという形なので、特定のブロックを非表示にするのにはもっと適した方法がありそうですが、とりあえず備忘録。

February 19, 2019 追記

「再利用ブロック」を記載し忘れていたので追記しました。
下記エントリーで気付かせてもらいました、ありがとうございます。

Gutenbergには下のイメージのように沢山のブロックが用意されており、現時点(Ver 5.0.1)で5グループの63種類あります。

デフォルトブロック

これらのブロックを利用することで様々な見栄えを表現することができるのですが、中にはサイトやクライアントにとっては不要なものもあったり、場合によってはデザイン的に使用してほしくないようなものもあるとは思うので、そういったときは下記で紹介する方法でデフォルトで表示されているブロックを非表示にすることができます。

冒頭で書いたように非表示にするというよりは表示させたいもののみを再度設定する形になり、allowed_block_types()のフックを用いてfunctions.phpに下記のように記述します。

functions.php

add_filter( 'allowed_block_types', 'custom_allowed_block_types' );
function custom_allowed_block_types( $allowed_block_types ) {
  $allowed_block_types = array(
    'core/paragraph',
    'core/heading',
    'core/image',
  );
  return $allowed_block_types;
}

このサンプルコードの場合は「段落」「見出し」「画像」の3ブロックのみを表示させるという指定で、記述後に投稿画面を確認するとこの3ブロック以外はすべて非表示になっていると思います。
このように必要なブロックのみを記述していくことで、結果的に不要なブロックは非表示にするという方法になります。

現状の各ブロックの指定方法については下記のようになっており、コピペして不要なものを削っていけば、必要なブロックのみが表示されるようになると思います。

functions.php

add_filter( 'allowed_block_types', 'custom_allowed_block_types' );
function custom_allowed_block_types( $allowed_block_types ) {
  $allowed_block_types = array(
    // 一般ブロック
    'core/paragraph',           // 段落
    'core/heading',             // 見出し
    'core/image',               // 画像
    'core/quote',               // 引用
    'core/gallery',             // ギャラリー
    'core/list',                // リスト
    'core/audio',               // 音声
    'core/cover',               // カバー
    'core/file',                // ファイル
    'core/video',               // 動画

    // フォーマット
    'core/code',                // ソースコード
    'core/freeform',            // クラシック
    'core/html',                // カスタムHTML
    'core/preformatted',        // 整形済み
    'core/pullquote',           // プルクオート
    'core/table',               // テーブル
    'core/verse',               // 詩

    // レイアウト要素
    'core/button',              // ボタン
    'core/columns',             // カラム
    'core/media-text',          // メディアと文章
    'core/more',                // 続きを読む
    'core/nextpage',            // 改ページ
    'core/separator',           // 区切り
    'core/spacer',              // スペーサー

    // ウィジェット
    'core/shortcode',           // ショートコード
    'core/archives',            // アーカイブ
    'core/categories',          // カテゴリー
    'core/latest-comments',     // 最新のコメント
    'core/latest-posts',        // 最新の記事

    // 埋め込み
    'core/embed',               // 埋め込み
    'core-embed/twitter',       // Twitter
    'core-embed/youtube',       // YouTube
    'core-embed/facebook',      // Facebook
    'core-embed/instagram',     // Instagram
    'core-embed/wordpress',     // WordPress
    'core-embed/soundcloud',    // SoundCloud
    'core-embed/spotify',       // Spotify
    'core-embed/flickr',        // Flickr
    'core-embed/vimeo',         // Viemo
    'core-embed/animoto',       // Animoto
    'core-embed/cloudup',       // Cloudup
    'core-embed/collegehumor',  // CollegeHumor
    'core-embed/dailymotion',   // Dailymotion
    'core-embed/funnyordie',    // Funny or Die
    'core-embed/hulu',          // Hulu
    'core-embed/imgur',         // Imgur
    'core-embed/issuu',         // Issuu
    'core-embed/kickstarter',   // Kickstarter
    'core-embed/meetup-com',    // Meetup.com
    'core-embed/mixcloud',      // Mixcloud
    'core-embed/photobucket',   // Photobucket
    'core-embed/polldaddy',     // Polldaddy
    'core-embed/reddit',        // Reddit
    'core-embed/reverbnation',  // ReverbNation
    'core-embed/screencast',    // Screencast
    'core-embed/scribd',        // Scribd
    'core-embed/slideshare',    // Slideshare
    'core-embed/smugmug',       // SmugMug
    'core-embed/speaker-deck',  // Speaker Deck
    'core-embed/ted',           // TED
    'core-embed/tumblr',        // Tumblr
    'core-embed/videopress',    // VideoPress
    'core-embed/wordpress-tv',  // WordPress.tv

    // 再利用ブロック
    'core/block',               // 再利用ブロック
  );
  return $allowed_block_types;
}

ちなみに、このブロック表示指定を特定の投稿タイプのみで行いたいときは下記のように記述します。
このサンプルコードの場合は「固定ページ」だけ一部ブロックが表示される形になり、その他の投稿タイプではデフォルトで用意されている全ブロックがそのまま表示されている状態になります。

functions.php

add_filter( 'allowed_block_types', 'custom_allowed_block_types', 10, 2 );
function custom_allowed_block_types( $allowed_block_types, $post ) {
  if ( $post->post_type === 'page' ) {
    $allowed_block_types = array(
      'core/paragraph',
      'core/heading',
      'core/image',
    );
  }
  return $allowed_block_types;
}

プラグインで新たにブロック追加して且つ管理画面で不要なブロックを非表示にできるものなどもありましたが、パッと見では投稿タイプ毎に指定などはできなかったですし、新しくブロックを増やす必要がないときは逆にそれらを非表示に設定していくのも面倒なので、とりあえずブロックの表示・非表示を設定したいぐらいのときはしばらくこの方法を利用しておこうかと思います。

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