web-dev-qa-db-ja.com

グーテンベルクでコアブロックタイプの登録解除を手助けする

WordPress Gutenbergでコアブロックタイプの登録を解除しようとしています。

私はここで提供されたコードを使いました: https://github.com/WordPress/gutenberg/blob/master/docs/extensibility/extending-blocks.md#removing-blocks

しかし、私はそれを機能させることができません。私が見逃している簡単なステップがあるかもしれないように私は感じますか?

  1. 私は自分のWPテーマで有効にしたプラグインを作成しました。
  2. 私のプラグインの[clore-blocks]フォルダに、 "clore-blocks.php"を作成しました。を含む:
/** 
 *特定のブロックを削除する
 */
関数clore_blacklist_blocks(){
 wp_enqueue_script(
 'clore- blacklist-blocks、
 plugins_url( 'blocks.js'、__FILE__)、
配列( 'wp-blocks')、
 filemtime(plugin_dir_path(__FILE__)。 'ブロック。 js ')// Version:filemtime  - ファイル修正時刻を取得する。
); 
} 
 add_action(' enqueue_block_editor_assets '、' clore_blacklist_blocks '); 
  1. Blocks.jsでは、私だけが持っています:
 wp.blocks.unregisterBlockType( 'core/verse'); 

これで "Verse"ブロックタイプが使用されなくなると思いましたが、グーテンベルグエディタでページを編集しようとすると、 "Verse"はまだ残っています。

WP editページからページソースを表示すると、 "blocks.js"ファイルが正しく参照されていることがわかりますが、何もしていません...または少なくとも必要なものではありません。やることそれがなぜなのか、あなたは何か考えがありますか?

5
LKD

allowed_block_typesフックを使えば、すべて私にとって役に立ちます。

例:

add_filter( 'allowed_block_types', 'my_function' );

function my_function( $allowed_block_types ) {

    return array(
        'core/paragraph'
    );

}

上記のコードをあなたのfunctions.phpファイルにカスタムプラグインとして挿入することができます。 Paragraphブロック以外のすべてのブロックを削除します。

その他の例はこちら https://rudrastyh.com/gutenberg/remove-default-blocks.html

4
Misha Rudrastyh

グーテンベルクのドキュメントのコード提案に従って同じ問題を抱えていた。

これを解決するために、JavaScriptコードにwp.domReady()呼び出しを追加しました。だから、このように:

wp.domReady( function() {
    wp.blocks.unregisterBlockType( 'core/verse' );
};

これで、 'verse'ブロックはブロックエディタから削除されました。

これは、管理者にJavaScriptファイルをロードする順序と関係があると思います。 unregisterBlockTypeはブロックエディタがロードされた後に呼び出されるべきです。

お役に立てれば!

提案を提供してくれたPayteRに感謝し、詳細については https://wordpress.org/gutenberg/handbook/designers-developers/developers/filters/block-filters/#using-a-blacklist をご覧ください。

1
Fat Pixel