社区新闻

开发者新动态(2023年2月)

欢迎阅读开发者月度系列的第一期。本文(以及未来更多文章)将列出 WordPress 扩展者社区需要了解的所有功能、变更及其他重要事项。月度汇总旨在过滤繁忙发布周期中的杂音,为您提供完整的资源列表以帮助您保持更新。汇总内容包括插件和主题开发的特定说明,以及由 WordPress 社区成员创建的教育资源列表。由于这是第一期,我们鼓励您对本文的格式和内容提供反馈。请在评论中分享您的想法。

请注意,第一期汇总包含了一些跨越 2023 年 1 月和 2022 年 12 月的功能,但后续文章将仅涵盖前一个月的内容。

重点内容

过去几个月里,许多令人兴奋的功能已经落地,并且每个功能都应随 WordPress 6.2 发布。建议至少使用 Gutenberg 插件 15.1 版本进行测试,因为在发布周期中功能可能会快速变化。

样式书

WordPress 站点编辑器,样式书已打开,展示浅色设计。
WordPress 站点编辑器,样式书已打开,展示深色设计。

Gutenberg 14.8 在站点编辑器的样式界面中引入了一个新的 样式书功能。它允许用户查看他们对每个块所做的更改,即使该块不在他们正在编辑的模板中。对于主题设计师来说,它提供了一个方便的位置来测试和修改其主题中每个块的设计。

样式书还自动支持第三方块,因此插件开发者无需担心任何特殊的集成。一切都能正常工作。

盒阴影

WordPress 文章编辑器,显示三张图片,每张图片展示一组 WordPress 按钮。每张图片都有一个浅灰色阴影,阴影大小从一张图片到下一张逐渐增加。

Gutenberg 14.9 通过 theme.json 引入了 盒阴影支持。它允许主题开发者添加一组自定义阴影预设,然后可以将其分配给块和元素。Gutenberg 15.1 为已注册的阴影预设向样式界面添加了一个 阴影选择器

请访问开发博客上的教程,了解如何在主题中使用阴影功能

自定义 CSS

WordPress 站点编辑器,显示一个单篇文章模板。右侧,一个“附加 CSS”框已打开,里面包含自定义 CSS。

自定义 CSS 功能的第一个迭代版本已在 Gutenberg 14.8 中落地。目标是实现与定制器中“附加 CSS”字段的功能对等,以便用户和开发者可以通过站点编辑器直接进行样式修改。

您可以通过访问站点编辑器并点击任何模板的编辑按钮来找到 CSS 字段。然后,选择样式菜单并点击垂直省略号按钮()。最后,点击下拉菜单中的附加 CSS项。一旦添加了自定义 CSS,该选项将永久出现在侧边栏中

截至 Gutenberg 15.1,按块自定义 CSS 已可用。开发者也可以通过 theme.json 为单个块添加 CSS。

目前,该字段会为错误的 CSS 显示验证消息,但这还不是一个完整的代码检查解决方案。扩展工具可能要到 WordPress 6.2 之后才会落地。请关注以下相关工单以获取更多信息:

重大变更与弃用

在 WordPress 6.2 发布之前,开发者应针对两项重大变更测试其插件和主题。可能存在需要更改代码的情况。

潜在的破坏性变更: 查询循环块 不再支持颜色设置。它现在是一个纯设置块,没有与设计相关的选项。WordPress 将为其嵌套的块引入一个包装的 Group 块,并将现有的颜色设置迁移到该 Group 中。开发者应测试这一点,以确保这不会对其主题中现有查询循环块的使用产生负面影响。

get_page_by_title() 函数将在 WordPress 6.2 中被弃用。插件和主题开发者应将其任何使用切换到 WP_Query 实例。

插件与工具

分离块工具面板

Gutenberg 14.7 引入了一项变更,将块工具面板分离为单独的标签页:样式和设置。前者将所有与设计相关的工具分组在一起,后者则包含所有其他选项。

块开发者应测试其自定义块,以确保其自定义设置位于正确的标签页下。如果没有,此次更新还为 InspectorControls 引入了一个 group 属性,允许插件作者将控件附加到适当的标签页。默认情况下,已注册的控件被放置在设置标签页下。

组件的底部边距

有一个正在进行的项目来彻底改造组件,以移除其默认的底部边距,这使得它们更容易在各种上下文中使用。几个组件已经移除了底部边距,并有一个新的可选属性 __nextHasNoMarginBottom

块包装器属性的 ID 支持

get_block_wrapper_attributes() 函数现在包含一个 id 属性作为其返回的关联数组中的一个项。这个额外的属性与函数先前返回的现有 classstyle 属性并列。

控制 WP_Query 的搜索列

WP_Query 现在支持一个新的 search_columns 参数,它允许开发者在通过 s 参数执行搜索查询时控制包含哪些数据库列。默认情况下,包含 post_titlepost_contentpost_excerpt 列。这个新参数允许开发者微调搜索,而无需直接过滤和手动调整 SQL 查询。

此变更还引入了 posts_search_columns 过滤器钩子,它提供了一个要搜索的列的数组。

wp_mail() 的自定义附件文件名

在该工单首次提出九年后,wp_mail() 函数现在允许开发者自定义电子邮件附件文件名。变更集增加了对传递一个名为 $attachments 的关联数组的支持,其中字符串键被用作文件名。

TabPanel 组件的 disabled 属性

TabPanel 组件现在支持在其 tabs 对象之一上设置 disabled 属性。开发者可以使用此属性向用户显示标签页以用于编辑器中的自定义实现,同时不允许他们与之交互。

获取最后插入的块客户端 ID

最初引入了一个用于获取最后插入的块客户端 ID的新选择器。然而,它已被弃用,转而使用一个用于返回多个块客户端 ID 数组的选择器。新的 getLastInsertedBlocksClientIds 选择器允许跟踪插入一个或多个块时的状态。

检查主题是否具有 theme.json

WordPress 正在引入一个新的 wp_theme_has_theme_json() 函数。它是一个条件函数,用于检查当前活动主题或其父主题是否具有 theme.json 文件。

修订后的 LinkControl 组件

LinkControl 组件正处于UI 彻底改造的过程中。虽然这主要是一个视觉上的更改,不会影响块开发者,但任何使用它的块或自定义组件都应检查是否存在潜在问题。

钩子

贡献者在上个月添加了一些新的钩子。第一个是一个新的 wp_set_password 动作钩子,每当调用 wp_set_password() 函数时就会触发。这允许开发者捕获任何密码被设置的实例并运行他们自己的功能。

wp_ajax_save_attachment 动作钩子在附件更新后但在发送 JSON 响应之前执行。这允许开发者更新任何已呈现的附加附件字段。

一个新的 bulk_edit_posts 动作钩子在处理批量编辑中的文章数据后触发。这应该使开发者更容易在此场景中保存额外数据,而无需依赖自定义 Ajax。

虽然这不是一个新的钩子,但添加了 wp_lazy_loading_enabled 过滤器的开发者一直无法控制页面上的特色图像是否被延迟加载。一个最近的补丁现在解决了这背后的逻辑,允许完全控制图像的加载方式。

主题

走廊闲谈

过去几个月里,举行了两次与块主题相关的走廊闲谈:

  • 块主题的性能考虑:本次会议主要讨论了底层的变化,并讨论了诸如使 JSON 解析系统更高效等事情。
  • 主题开发者福利:本次活动涵盖了主题作者更实际的场景,重点讨论了与样式相关的功能。

排版更新

WordPress 6.1 中引入的流体排版功能使主题设计师能够通过 theme.json 中的几个设置更容易地涉足内在设计。现在,他们将能够通过设置最小尺寸来进一步优化字体大小的缩放方式。

越来越多的块正在相互达到对等,并允许完全支持与排版相关的设计工具。在过去的一个月里,页面列表块获得了对全套选项的支持。

布局更新

WordPress 6.1 为主题作者充实了其布局系统的大部分内容,贡献者继续在此基础上进行构建。弹性布局现在支持更多尺寸选项。Row 块的子块有一个新的宽度控制。同样,Stack 块的子块有一个高度控制。每个这些控制都有三个选项:

  • 适应: 块适应以填充其所需空间。
  • 填充: 块拉伸以填充任何可用空间。这需要为 Stack 块设置一个固定的高度才能进行拉伸。
  • 固定: 选择后,可以为块设置一个基于单位的特定宽度/高度。

位置支持目前正在开发中,并且“粘性”位置的第一个迭代版本已通过 Gutenberg 15.1 提供。这将允许设计师创建具有粘性标题等功能的主题。该功能的基础应随 WordPress 6.2 发布。然而,有几个后续任务来充实此功能,这些任务已被推迟到 WordPress 6.3 开发周期。

块主题的文章编辑器在 iframe 中

当块主题处于活动状态时,文章编辑器的内容画布位于 iframe 中,类似于站点编辑器。这不应直接影响任何现有代码,但它可能允许主题作者为边缘情况减少一些 CSS 技巧。本质上,此更改应减少 CSS 冲突。

更新: 目前有一个与在 iframe 化的文章编辑器中支持第三方脚本依赖项相关的开放工单,可能会影响一些自定义块。

更新 – 2023-02-16: 此功能已在 WordPress 核心中恢复,以便为插件作者提供更多时间来支持此更改。在下一个版本中,仅当所有块都使用 API 版本 3 或更高版本时,编辑器才会在 iframe 中。

模式的模板类型

模式 API 现在支持为模板类型注册模式。这是主题作者在 WordPress 6.2 开发周期中应关注的一项功能。它可能在模板创建工作流中发挥不可或缺的作用,但尚未合并到 UI 中。

从样式界面编辑块样式变体

用户现在可以通过站点编辑器中的样式界面编辑现有的块样式变体。这可能会影响主题注册的样式,这些样式通常具有与之关联的自定义 CSS。长期目标将是直接从 UI 创建自定义块样式。

通过 functions.php 支持外观工具

最初在 WordPress 6.1 中添加,主题可以通过 theme.json 启用多个与外观相关的默认设置。版本 6.2 将引入一个主题支持等效项,开发者可以通过 functions.php 选择加入。

更新的块模式类别和描述

WordPress 6.2 将支持块模式类别的描述。核心还引入了几个新的默认类别,主题作者可以使用:

  • banner
  • call-to-action
  • contact
  • portfolio
  • posts
  • services
  • team
  • testimonials

教育资源

WordPress TV 视频教程

WordPress 培训团队发布了一些对开发者有帮助的新视频教程: