WordPress 块样式(Block Patterns)完全指南

WordPress 块样式是 5.4 版本引入的一项功能,本质上是一组预先配置好的区块组合。你可以把它理解成“区块模板”,用户只需点击一下,就能插入一个设计好的布局,比如英雄区(Hero Section)、轮播图、联系表单等等。对于主题开发者来说,块样式大地提升了工作效率,也让非技术用户能够更轻松地搭建复杂页面。本文将带你从零开始,掌握块样式的创建、注册、调用和移除,并穿插一些实战中的实用技巧。无论你是主题开发新手还是想进一步优化工作流,这篇指南都能为你提供清晰的思路。


什么是块样式?

块样式就是一组区块的集合,它们被提前组合好,并作为一个整体提供给用户使用。比如,一个“新闻简报订阅”区块可能包含一个标题、一段描述文字和一个输入框。用户不需要自己一步步搭建,直接插入即可。

块样式和模板部件(Template Parts)有些相似,但大的区别在于:块样式支持 PHP,这意味着你可以在其中使用动态数据、翻译函数,甚至根据条件判断是否显示某部分内容。

注意:用户也可以在后台的“外观 > 编辑器 > 样式”中自行创建和管理块样式,这对开发调试非常方便。


如何创建一个块样式?

直接的方式是在编辑器中先搭好布局,然后复制区块代码。

  1. 在文章编辑器中添加你需要的区块(比如封面、标题、按钮等),调整好样式。
  2. 点击工具栏的“选项”(三个点图标),选择“复制”。
  3. 系统会生成一段包含所有区块的 HTML 注释代码。

示例代码(简化版):

html

<!-- wp:cover {"overlayColor":"contrast","align":"full"} -->
<div class="wp-block-cover alignfull">
  <div class="wp-block-cover__inner-container">
    <!-- wp:heading {"textAlign":"center"} -->
    <h2 class="has-text-align-center">欢迎来到我的网站</h2>
    <!-- /wp:heading -->
    <!-- wp:paragraph {"align":"center"} -->
    <p class="has-text-align-center">这里是我的小天地,分享生活与思考。</p>
    <!-- /wp:paragraph -->
  </div>
</div>
<!-- /wp:cover -->

注意:建议将整个布局放在一个容器区块(如“组”或“封面”)内,这样用户拖动时更方便。


如何注册块样式?

注册块样式有两种方法:自动注册(推荐)和手动注册(PHP)。

方法一:使用 /patterns 文件夹(自动注册)

在你的主题根目录下创建 /patterns 文件夹,把每个样式放在单独的 PHP 文件中。文件头部需要包含注释信息,WordPress 会自动识别并注册。

示例文件 /patterns/hero.php:

php

<?php
/**
 * Title: 英雄区
 * Slug: mytheme/hero
 * Categories: featured
 * Description: 一个带背景图和按钮的英雄区域
 */
?>
<!-- 你的区块代码 -->

文件头字段说明:

  • Title:样式名称(可翻译)
  • Slug:标识符,格式 主题名/样式名
  • Categories:所属分类,用逗号分隔
  • Description:描述信息(仅屏幕阅读器可见)
  • Viewport Width:预览宽度(像素)
  • Inserter:是否显示在插入器中(默认 true)
  • Keywords:搜索关键词
  • Block Types:关联的区块类型
  • Post Types:限制在哪些文章类型中可用
  • Template Types:适配的模板类型

注册后,你就能在编辑器的“样式”标签页中找到它。

方法二:使用 PHP 手动注册

如果你需要更灵活的控制,可以在 functions.php 中使用 register_block_pattern() 函数。

示例:

php

add_action('init', 'mytheme_register_patterns');

function mytheme_register_patterns() {
    register_block_pattern('mytheme/hero', [
        'title'      => __('英雄区', 'mytheme'),
        'categories' => ['featured'],
        'source'     => 'theme',
        'content'    => '<!-- 你的区块代码 -->'
    ]);
}

注意:两种方法可以混用,但同一个样式只能用一种方式注册,否则会冲突。


在模板中引用块样式

块样式不仅供用户手动插入,你还可以直接在主题模板(如 index.html 或 home.html)中引用。

引用方式非常简单:

html

<!-- wp:pattern {"slug":"mytheme/hero"} /-->

把它放在模板的合适位置,比如页眉和页脚之间:

html

<!-- wp:template-part {"slug":"header"} /-->
<!-- wp:pattern {"slug":"mytheme/hero"} /-->
<!-- wp:template-part {"slug":"footer"} /-->

这样,你的样式就会作为模板的一部分自动显示在前端。


如何移除块样式?

如果你不需要某些样式(比如来自核心或插件的),可以将其注销。

移除单个样式

php

add_action('init', 'mytheme_unregister_patterns', 999);

function mytheme_unregister_patterns() {
    unregister_block_pattern('mytheme/hero');
}

移除所有核心样式

php

add_action('after_setup_theme', function() {
    remove_theme_support('core-block-patterns');
});

禁用远程样式

WordPress 会从官方目录加载远程样式,你可以通过过滤器关闭:

php

add_filter('should_load_remote_block_patterns', '__return_false');

进阶技巧

1. 多语言支持

因为样式文件本质上是 PHP,你可以使用翻译函数:

php

<h2><?php esc_html_e('欢迎来到我的网站', 'mytheme'); ?></h2>

2. 使用主题资源

你可以动态引用主题中的图片:

html

<img src="<?php echo esc_url(get_theme_file_uri('assets/images/bg.jpg')); ?>" />

3. 条件加载区块

某些区块可能依赖三方插件,你可以先检查是否可用:

php

if (WP_Block_Type_Registry::get_instance()->is_registered('core/paragraph')) {
    // 输出区块代码
}

如果区块未注册,系统会提示用户安装,不会导致网站崩溃。

4. 条件注册样式

如果你只想在特定条件下注册样式,可以在 register_block_pattern 外层加判断:

php

if (WP_Block_Type_Registry::get_instance()->is_registered('myplugin/block')) {
    register_block_pattern(...);
}

管理样式分类

WordPress 自带了一些分类(如 featured、buttons、columns 等)。你也可以创建自己的分类,方便整理样式。

注册新分类

php

add_action('init', function() {
    register_block_pattern_category('mytheme/custom', [
        'label'       => __('我的主题:自定义', 'mytheme'),
        'description' => __('这是为主题定制的样式', 'mytheme')
    ]);
});

移除分类

php

add_action('init', function() {
    unregister_block_pattern_category('mytheme/custom');
});

总结

块样式是 WordPress 主题开发中一项非常实用且灵活的功能。通过将常用的区块组合打包成样式,你不仅能让用户更地构建内容,还能在主题模板中直接引用,大大提升开发效率。

回顾本文的核心内容:

  • 块样式是一组预先配置好的区块,支持 PHP,便于国际化和动态内容。
  • 注册方式有两种:通过 /patterns 文件夹(推荐)或 PHP 手动注册。
  • 样式可以插入到内容中,也可以直接用在模板里。
  • 移除不需要的样式(核心、远程或三方)同样简单。
  • 掌握分类管理和条件注册,能让你的主题更加和健壮。

希望这份指南能帮助你更好地掌握 WordPress 块样式,并在实际项目中灵活运用。