WordPress の core/file のデフォルト値を変更する方法

note
WordPress の core/file のデフォルト値を変更する方法
import { addFilter } from '@wordpress/hooks';

const myRegisterBlockFilter = (settings, name) => {
  if (name === 'core/file') {
    return {
      ...settings,
      attributes: {
        ...settings.attributes,
        showDownloadButton: {
          type:  'boolean',
          default: false,
        }
      }
    }
  }

  return settings;
};

addFilter(
  'blocks.registerBlockType',
  'my/filter',
  myRegisterBlockFilter
);

core ブロックを読み込む際に attributes のデフォルト値を追加・変更する。
core/filedisplayPreview に関してはファイル選択時に値を変更するようなのでどうしようもなかった。
多分ファイル選択時のフックはなかったはず……。

別件で registerBlockStyle isDefaulttrue でも InspectorControls のボタンだけアクティブになって className が当たってないことがあった。バグなのか仕様なのか自分の書き方が悪いのか良くわからなかったので attributesclassName へデフォルト値を追加して対応した。

return {
  ...settings,
  attributes: {
    ...settings.attributes,
    className: {
      type:  'string',
      default: 'is-style-my-class',
    }
  }
}

初期値を別のスタイルへ変更したい場合に修正箇所が増えるのであまり良くないと思う。