WordPress Gutenbergでコアブロックタイプの登録を解除しようとしています。
私はここで提供されたコードを使いました: https://github.com/WordPress/gutenberg/blob/master/docs/extensibility/extending-blocks.md#removing-blocks
しかし、私はそれを機能させることができません。私が見逃している簡単なステップがあるかもしれないように私は感じますか?
/** *特定のブロックを削除する */ 関数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 ');
wp.blocks.unregisterBlockType( 'core/verse');
これで "Verse"ブロックタイプが使用されなくなると思いましたが、グーテンベルグエディタでページを編集しようとすると、 "Verse"はまだ残っています。
WP editページからページソースを表示すると、 "blocks.js"ファイルが正しく参照されていることがわかりますが、何もしていません...または少なくとも必要なものではありません。やることそれがなぜなのか、あなたは何か考えがありますか?
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
グーテンベルクのドキュメントのコード提案に従って同じ問題を抱えていた。
これを解決するために、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 をご覧ください。