注册模式

模式简介,您学习了如何从WordPress管理界面创建模式。现在是学习如何将这些自定义模式直接添加到主题的时候了

本文将向您展示如何从主题中获取模式的块代码并将其注册到WordPress。它还将涵盖注销模式和注册/注销模式类别。

创建图案

如果您不熟悉创建自定义模式,请花点时间研究模式简介向导,它将引导您完成整个过程。

您的模式可以是任何您喜欢的模式,但出于本文的目的,下面共享的代码将是一个核心Cover块,其中嵌套了一些块,遵循以下结构:

    • 标题
    • 段落
    • 按钮
      • 按钮

您可以尝试自己从编辑器中重新创建这个,特别是如果您刚刚习惯使用编辑器的话。以下是编辑器中的图案截图:

WordPress模式编辑器,在内容区显示一个基本的封面块,背景为黑色,演示文本为白色。

您也可以根据自己的喜好进行自定义,但建议您在第一次创建模式时保持相对简单。

下面是上述模式的块标记的外观(请阅读模式简介获取模式代码的更多信息):

<!-- wp:cover{“overlayColor”:“对比度”,“对齐”:“完整”}--><div class=“wp-block-cover alignfull”><span aria-hidden=“true”class=“wb-block-coor__background-has-contrast-background-color has-backgroud-dim-100 has-background-dim”></span><div class=“wp-block-cover__inner-container”><!--wp:group{“style”:{“space”:}“blockGap”:“2.5rem”}},“layout”:{“type”:“constrained”,“wideSize”:“%”,“contentSize”:“75%”}}--><div class=“wp-block-group”><!--wp:heading{“textAlign”:“center”}--><h2 class=“wp-block-heading has-text-align-center”>欢迎访问我的网站</h2><!-- /wp:标题--><!-- wp:段落{“align”:“center”}--><p class=“has-text-align-center”>这是我远离家乡的小家。在这里,你会了解我。我会分享我的爱好、爱好和更多。有时,我甚至会在博客上发表一些有趣的文章</p>(第页)<!-- /wp:段落--><!-- wp:buttons{“layout”:{“type”:“flex”,“justifyContent”:”center“}}--><div class=“wp-block-buttons”><!--wp:button{“className”:“is-style-outline”}--><div class=“wp-block-button is-style-outline”>查看我的热门帖子︎</a> </div><!-- /wp:按钮--></div><!-- /wp:按钮--><!-- /wp:组--></div></div><!-- /wp:封面-->

在本文的剩余部分中,您将使用相同的模式,学习如何注册、注销和进一步自定义它。

最好将大多数模式包装在Group、Cover或其他容器块(即允许嵌套块的块)中。这使得主题用户更容易在编辑器中移动整个模式。您还可以将CSS类添加到此外部块,以应用于整个模式的任何自定义样式。

注册模式

在WordPress中注册块模式有两种方法:

  • 通过将包含块标记的文件放置到主题中的/patterns文件夹中。
  • 通过手动调用寄存器块模式()功能。

最简单的路线是第一条。在接下来的部分中,您将学习如何同时完成这两项工作,但本手册将建议您使用/图案文件夹,但在某些边缘情况下除外。

使用/patterns目录注册模式

WordPress将识别放置在主题中的任何模式文件/图案文件夹,它将自动为您注册它,前提是它具有有效的模式文件头。

一个文件头是PHP注释的代码,在文件顶部有键+值对列表。WordPress解析此信息以收集元数据。在这种情况下,元数据用于注册块模式。

对于模式文件头,可以设置以下键:

  • 职务:可以翻译的可读标题。
  • 鼻塞:一个命名的slug,它是您的模式所特有的形式名称空间/模式名称.
  • 类别:模式所属类别的逗号分隔列表。
  • 说明:注册模式的详细描述。仅向屏幕阅读器显示。
  • 视口宽度:的宽度<iframe>预览图案时的视口(以像素为单位)。
  • 插入器:是否在插入器中显示图案。默认为真的.
  • 关键词:与模式相关的关键字的逗号分隔列表。用户在插入器中搜索时使用。
  • 块类型:以逗号分隔的块类型列表,用于关联模式(例如。,堆芯/顶盖,核心/后内容).
  • 岗位类型:以逗号分隔的帖子类型列表,用于限制模式(例如。,邮递,第页). 默认为所有帖子类型。
  • 模板类型:模式适用的模板类型的逗号分隔列表(例如。,,单一的).

对于大多数模式,您至少应该添加Title、Slug和Categories字段。模式文件应如下所示:

<?php(电话)/***标题:英雄*Slug:主题lug/英雄*类别:特色*/?><!-- 此处显示模式代码。-->

现在,让我们将从上一节复制的代码添加到/模式/hero.php主题中的文件:

<?php(电话)/***标题:英雄*Slug:主题lug/英雄*类别:特色*/?><!-- wp:cover{“overlayColor”:“对比度”,“对齐”:“完整”}--><div class=“wp-block-cover alignfull”><span aria-hidden=“true”class=“wb-block-coor__background-has-contrast-background-color has-backgroud-dim-100 has-background-dim”></span><div class=“wp-block-cover__inner-container”><!--wp:group{“style”:{“space”:}“blockGap”:“2.5rem”}},“layout”:{“type”:“constrained”,“wideSize”:“%”,“contentSize”:“75%”}}--><div class=“wp-block-group”><!--wp:heading{“textAlign”:“center”}--><h2 class=“wp-block-heading has-text-align-center”>欢迎访问我的网站</h2><!-- /wp:标题--><!-- wp:段落{“align”:“center”}--><p class=“has-text-align-center”>这是我远离家乡的小家。在这里,你会了解我。我会分享我的爱好、爱好和更多。有时,我甚至会在博客上发表一些有趣的文章</p>(第页)<!-- /wp:段落--><!-- wp:buttons{“layout”:{“type”:“flex”,“justifyContent”:”center“}}--><div class=“wp-block-buttons”><!--wp:button{“className”:“is-style-outline”}--><div class=“wp-block-button is-style-outline”>查看我的热门帖子Ş</a> </div><!-- /wp:按钮--></div><!-- /wp:按钮--></div><!-- /wp:组--><!-- /wp:封面-->

现在,如果你在WordPress中添加或编辑一篇新文章,你应该会在插入器中看到你的模式。单击模式选项卡并选择作为特色的:

打开模式插入器的WordPress文章编辑器。选中“特色”子面板并显示单个图案。

您还应该能够看到下面列出的模式外观>编辑器>图案在WordPress管理员中。

使用PHP注册模式

而不是使用/图案文件夹来自动注册您的模式,您可以选择通过PHP手动注册它们。您可以混合和匹配这两种注册方法,但单个模式只能用一种方法注册。

要使用PHP注册块模式,必须使用寄存器块模式()功能。其签名如下:

寄存器块模式(字符串$pattern_name,数组$pattern_properties):布尔

该函数接受两个参数并返回真的,具体取决于模式是否已成功注册:

  • $图案名称:一个命名的slug,它是您的模式所特有的形式名称空间/模式名称.
  • $pattern_properties($模式属性):
    • 内容:图案的块标记。
    • 标题:可以翻译的可读标题。
    • 类别:模式所属类别的数组。
    • 描述:注册模式的详细描述。仅向屏幕阅读器显示。
    • 视图端口宽度:的宽度<iframe>预览图案时的视口(以像素为单位)。
    • 插入器:是否在插入器中显示图案。默认为真的.
    • 关键字:与模式相关的关键字数组。用户在插入器中搜索时使用。
    • 块类型:要与图案关联的块类型数组。
    • 帖子类型:限制模式的帖子类型数组。默认为所有帖子类型。
    • 来源:注册模式的源。这应该设置为主题因为这个图案来自一个主题。
    • 模板类型:模式适用的模板类型数组。

通过PHP注册模式时,应该在初始化挂钩。现在尝试通过在中添加以下代码来注册您的自定义模式函数.php(请确保将自定义标记添加到内容属性):

add_action('init','themeslug_register_patterns');函数themeslug_register_patterns(){register_block_pattern('themeslug/hero',数组(“title”=>__(“Hero”,“themeslug”),“categories”=>数组(“featured”),“source”=>“theme”,“内容”=>“<!--此处显示块模式。-->') );}

有条件注册模式

如果您需要有条件地注册整个模式,那么有两种方法可供选择,具体取决于您喜欢如何注册模式。

在/patterns文件夹中有条件地注册模式

如果您使用了自动注册方法将图案放置在主题的/图案文件夹,没有真正的方法可以有条件地注册它。在这种情况下,您必须取消注册该模式。

假设您只想使之前注册的英雄模式可用,如果核心/段落块已注册。在实际场景中,您可能正在检查第三方块核心/段落块仅用于此示例。

在您的函数.php文件以注销您以前注册的模式:

add_action('init','themeslug_unregister_patterns',999);函数themeslug_unregister_patterms(){if(WP_Block_Type_Registry::get_instance()->is_registered('核心/段落')){unregister_block_pattern('themeslug/hero');}}

上述代码使用工作包块类型注册表类,它存储服务器端使用WordPress注册的所有块类型。使用类的is_registered()方法,您可以确定块是否已注册。

通过有条件地注册模式寄存器块模式()

如果通过PHP手动注册模式,只需将调用包装到寄存器块模式()用你的条件检查。

使用与上面相同的示例,如果核心/段落块通过将其添加到函数.php:

add_action('init','themeslug_register_patterns',999);函数themeslug_register_patterns(){if(WP_Block_Type_Registry::get_instance()->is_registered('核心/段落')){register_block_pattern('themeslug/hero',数组(“title”=>__(“Hero”,“themeslug”),“categories”=>数组(“featured”),“source”=>“theme”,“内容”=>“<!--此处显示块模式。-->') );}}

正在注销模式

有时需要注销块模式,以便它们不会出现在用户的插入器中。例如,您可能想删除一些核心WordPress模式,那些由父主题添加的模式(如果您正在构建子主题),或者那些由第三方插件添加的模式。

当您需要注销单个块模式时,您将使用unregister_block_pattern()功能:

unregister_block_pattern(字符串$pattern_name):bool

与注册模式时一样,您还需要在初始化挂钩。因为模式通常(但并不总是)以默认优先级注册10初始化,您将希望使用更高的优先级,以便稍后运行代码。

尝试通过将此代码添加到您的函数.php文件:

add_action('init','themeslug_unregister_patterns',999);函数themeslug_unregister_patterms(){unregister_block_pattern('themeslug/hero');}

删除核心模式

虽然您可以使用unregister_block_pattern()要注销单个核心WordPress模式,您还可以通过删除对核心块模式功能的支持来删除所有模式。

要删除所有核心WordPress模式,请将此代码添加到主题函数.php文件:

add_action('after_setup_theme','themeslug_remove_core_patterns');函数themeslug_remove_core_patterns(){remove_theme_support(“核心块模式”);}

禁用远程模式

WordPress还自动从官方远程加载一些模式图案目录在有些情况下,你可能不想加载这些模式,例如它们与你的主题设计不匹配。您可能还想选择不在为客户端构建的站点上调用远程API。无论是什么情况,您都可以通过筛选应加载远程块模式挂钩。

要禁用远程模式,请将此代码添加到函数.php文件:

添加过滤器(“should_load_remote_block_patterns”,“__return_false”);

图案类别

WordPress有几个默认注册的块模式类别:

  • 作为特色的
  • 关于
  • 音频(添加到WordPress 6.4中)
  • 横幅
  • 按钮
  • 行动要求
  • 接触
  • 页脚
  • 画廊
  • 收割台
  • 媒体
  • 文件夹
  • 帖子
  • 查询(使用帖子相反)
  • 服务
  • 团队
  • 证词
  • 文本
  • 视频(添加到WordPress 6.4中)

通常,最好为主题使用这些默认类别。这将保持用户习惯的一致UI。但有时您可能希望添加自己的类别,甚至删除已注册的类别。

在本文的这一节中,您将学习如何注册和注销自定义块模式类别。

注册图案类别

要注册用于将一个或多个模式放入的自定义类别,必须使用寄存器块模式类别()功能:

register_block_pattern_category(寄存器块模式类别)register_block_pattern_category(寄存器块模式类别)字符串$category_name,数组$category_properties):布尔

该函数接受两个参数:

  • $类别名称:类别的唯一ID/slug。最好在这个词前面加上你的主题slug(例如。,主题博客类别名称).
  • $category_properties(类别_属性):用于定义有关类别的更多数据的属性数组:
    • 标签:可翻译类别的可读标签/标题。
    • 描述:可翻译类别的描述。

尝试为主题添加新的自定义图案类别。将此代码添加到主题函数.php文件:

add_action('init','themeslug_register_pattern_categories');函数themeslug_register_pattern_categories(){register_block_pattern_category('themeslug/custom',数组('label'=>__('主题名称:自定义','themeslug'),“description”=>__(“Theme Name的自定义模式”,“themeslug”)) );}

现在尝试添加主题插件/自定义类别到任何块图案:

<?php(电话)/***标题:英雄*Slug:主题lug/英雄*类别:特色、主题插件/自定义*/?><!-- 此处显示块标记。-->

该类别的任何注册图案现在都将出现在插入器和下面外观>编辑器>图案(外观>图案经典主题):

站点编辑器中的WordPress模式库。它显示选定的自定义类别,该类别具有单个图案预览。

注销图案类别

要注销已注册的模式类别,必须使用取消注册块模式类别()功能:

unregister_block_pattern_category(字符串$category_name):bool

该函数接受单个参数:

  • $类别名称:要注销的已注册类别的名称(即slug)。

尝试将此代码添加到您的函数.php删除主题插件/自定义您在上一步中注册的类别:

add_action('init','themeslug_unregister_pattern_categories');函数themeslug_unregister_pattern_categories(){注册表块模式类别('themeslug/custom');}