10 Gutenberg 与区块支持

整理主题支持、编辑器样式、区块样式、区块 Pattern 和禁用区块场景。

10 Gutenberg 与区块支持

本页关键词

Gutenberg add_theme_support register_block_style block pattern allowed_block_types_all

学习目标

代码使用提醒

本页代码适合用于学习和研究。复制到正式网站前,请先备份,并优先在测试环境验证。

涉及用户输入、后台保存、接口请求、删除操作和邮件发送时,要同时考虑权限、nonce、sanitize、validate 和 escape。

1. 添加区块编辑器主题支持

基础
<?php function mysite_block_editor_setup() { add_theme_support( 'align-wide' ); add_theme_support( 'editor-styles' ); add_theme_support( 'responsive-embeds' ); add_editor_style( 'assets/css/editor-style.css' ); } add_action( 'after_setup_theme', 'mysite_block_editor_setup' );
让编辑器体验更接近前台。

2. 注册区块样式

实用
<?php function mysite_register_block_styles() { register_block_style( 'core/button', array( 'name' => 'outline-dark', 'label' => '深色描边按钮', ) ); } add_action( 'init', 'mysite_register_block_styles' );
可给核心区块增加自定义样式选项。

3. 注册区块 Pattern

实用
<?php function mysite_register_patterns() { register_block_pattern( 'mysite/hero-simple', array( 'title' => 'Simple Hero', 'description' => '一个简单的首页 Hero 区块组合。', 'content' => '<!-- wp:heading --><h2>Build Better Outdoor Spaces</h2><!-- /wp:heading --><!-- wp:paragraph -->', ) ); } add_action( 'init', 'mysite_register_patterns' );
Pattern 适合给编辑人员提供可复用版式。

4. 限制可用区块

维护
<?php function mysite_allowed_blocks( $allowed_blocks, $editor_context ) { return array( 'core/paragraph', 'core/heading', 'core/image', 'core/buttons', 'core/columns', ); } add_filter( 'allowed_block_types_all', 'mysite_allowed_blocks', 10, 2 );
适合交付客户时减少误操作,但要谨慎限制。

5. 给编辑器加载 JS

进阶
<?php function mysite_block_editor_assets() { wp_enqueue_script( 'mysite-editor', get_stylesheet_directory_uri() . '/assets/js/editor.js', array( 'wp-blocks', 'wp-dom-ready', 'wp-edit-post' ), '1.0.0', true ); } add_action( 'enqueue_block_editor_assets', 'mysite_block_editor_assets' );
编辑器资源和前台资源要区分加载。

6. theme.json 示例结构

结构
{ "version": 2, "settings": { "color": { "palette": [ { "slug": "brand", "color": "#1e3a8a", "name": "Brand" } ] }, "spacing": { "units": ["px", "rem", "%"] } } }
区块主题和现代主题常用 theme.json 管理全局样式能力。

本页总结

Gutenberg 代码不只涉及自定义区块,也包括主题支持、编辑器样式、区块样式、Pattern 和编辑权限控制。