仅供参考:6.2 RC 2删除了新站点编辑器的导航部分

总结: 

正在删除6.2 RC 2的浏览模式导航部分(技术项目名称)。这不会影响在 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。导航块的设置。这是所有人的共同决定核心核心 核心是运行WordPress所需的一组软件。核心开发团队构建WordPress。编辑技术主管,核心编辑分诊分诊 评估和排序错误报告的行为,以确定优先级、严重性和其他因素。领导和设计领导。感谢所有帮助测试、打开问题、共享设计和发布PR的人,他们推动了此功能的发展并决定删除此功能。它为以后的版本重新考虑奠定了坚实的基础,并将继续使用古腾堡古腾堡 古腾堡项目是WordPress的新编辑器界面。编辑器改进了创建新内容的过程和体验,使编写丰富内容变得更加简单。它使用“块”来增加丰富性,而不是短代码、自定义HTML等。https://wordpress.org/gutenberg/ 插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件进化。

视频说明:

为了更好地解释正在发生的变化并防止任何混淆,下面是一段视频,详细介绍了正在删除的内容:

概括一下:

  • 此更改仅影响导航部分,这意味着模板和模板部件部分将保留。
  • 此更改不会影响使用导航块的块设置管理菜单的其他方式。

更广泛的背景:

6.2引入了一种与站点编辑器交互的新方式。您将能够看到整个站点,而不是直接拖放到支持主页的模板中。深色颗粒侧边栏边栏 WordPress中的侧边栏是指WordPres主题使用的小部件可读区域,用于显示不属于主内容的信息。它并不总是侧面的垂直柱。它可以是内容区域、页脚、页眉或主题中任何位置下方或上方的水平矩形。包含所有模板和模板部件的列表;单击这些组件中的任何一个都会在编辑器的主画布中预览它。这种体验上的改变使用了项目名称“浏览模式”(为浏览者所注意githubgithub GitHub是一个提供git存储库在线实现的网站,其他开发人员可以轻松共享、复制和修改这些存储库。公共存储库可以免费托管,私有存储库需要付费订阅。GitHub引入了“拉请求”的概念,在将贡献者在分支中所做的代码更改合并为存储库所有者之前,可以对其进行审查和讨论。https://github.com/,松弛,松弛松弛(Slack) Slack是一个协作群聊平台https://slack.com/WordPress社区在https://make.wordpress.org/chat/.等)。在Gutenberg 15.1中,6.2中完全包含了最后一个版本,在这个新体验中添加了一个导航部分,允许您从相同的深色侧边栏管理主导航,预览菜单项的内容,并在这些模板中编辑内容(即主站点结构页面)。这提供了一个很好的中间地带重新引入内容编辑并在发布时将其完全分离。

添加后,作为贝塔贝塔 一种预先发布的软件,分发给大量用户在真实条件下进行试用。Beta版已经在内部进行了alpha测试,在外观、感觉和功能上与最终产品相当接近;然而,设计更改经常作为过程的一部分发生。这个循环还在继续,各种各样的错误和改进开始累积起来。特别是,最主要的难点在于显示哪个菜单(以及如何更改它),需要更好地描述这个新部分的功能,并改进从该部分添加链接的一般体验。例如,这里有一段很短的视频,展示了Inserter如何不优先处理更常用的块,如页面链接:

这些问题引发了各种想法,如何更好地包含体验,同时在站点编辑器中仍然提供一些有价值的东西,特别是允许进行某种程度的内容编辑。例如,在插入器中排列页面链接的优先级(48724)允许进行链接编辑,或者稍后尝试导航侧栏的“只读”视图(48971)提供更加稳固的体验。工作进行得越深入,适应浏览模式部分的更改就越多与页面列表块类似自定义链接处理、和添加新菜单项的迭代。即使尝试将体验锁定在更低的位置,错误仍会继续出现,而且体验还不够完善,无法继续前进。这导致核心编辑技术、核心编辑分类和设计领先于WordPress 6.2的决定钢筋混凝土发布候选 作为版本发布周期的最后阶段之一,该版本向公众发出了最终发布的信号。另请参见α(β).2以移除当时的与更广泛的发布团队共享.

在过去几周里,这是一个不断发展的对话,它涉及核心编辑每周检查分类、betas/rcs/等每周分类、古腾堡公关和古腾堡问题。例如@尼克·迭戈我已经提到导航部分是我们在各个方面共同关注的难点,包括每周核心编辑分类更新(包括今天).虽然这意味着讨论主要是公开的,但它也在蔓延,并花了很大的努力来保持最新。这留下了两个需要改进的主要方面:1)重述核心编辑技术和核心编辑分类之间的逻辑讨论,使其比在私人DM或线程中更公开;2)将古腾堡项目中设计师之间的更多讨论引入发布班频道。这将是一个很好的模型,可以在未来考虑采用以古腾堡设计为重点的讨论主题.

相关问题和PR:

下面是一个可能不全面的列表,您可以在其中看到讨论和迭代的发生:

  • 页面链接隐藏在插入器中,需要更好地划分常用块的优先级。问题:48612公关:4872448752你可以看到关于6.3的评语/在6.2中包括哪些内容以获得需要的体验。
  • 如果页面列表块是菜单中唯一的块(和自动展开),则删除父级:问题:48714.PR正在进行中:48725.
  • 不清楚哪个菜单优先,需要更新其逻辑。公关:48689.
  • 添加描述并将+按钮的位置与浏览模式的其他部分统一起来。问题:48665.公关:48689
  • 添加后无法编辑页面列表或自定义链接。问题:48593
  • 无法编辑网站徽标、搜索、空格、社交图标、页面列表块。问题:48675.
  • 将描述添加到每个明细页:48689
  • 确定插入器中页面链接的优先级:48724.
  • 可以选择链接到的页面:48593.
  • [Bug]使用+按钮时,子菜单会添加到空页面列表或自定义链接块中。问题:48741.
  • [Bug]如果您似乎点击了一个404的页面,导航部分会随机更改显示的菜单。问题:48744.
  • [Bug]自定义链接用户界面用户界面 用户界面会出现在侧边栏导航的画布外部。修复的公关:48633.

再次感谢大家为此付出的巨大努力!


如果你有任何问题/意见/疑虑,请在下面分享,我会直接跟进,或者通过追踪知情人士的答案。

#6-2,#开发注释-6-2

在WordPress 6.2中请求将库升级到2.0.5

Trac公司Trac公司 Edgewall Software的一个开源项目,用作WordPress的错误跟踪和项目管理工具。 为bug报告和bug跟踪器上的功能开发创建。 #54504创建的目的是将请求库升级到2.0.0版本。请求2.0.0是一个主要版本主要版本 由前两个数字(3.6)标识的发布,是整个发布周期和功能开发的重点。WordPress对主要发布版本使用小数点计数,因此2.8、2.9、3.0和3.1是连续的,并且在范围上具有可比性。并包含中断更改。在此过程中,完成了对2.0.5的其他升级。查看升级指南.

引入名称间距

Requests 2.0.0为所有Requests代码引入了命名空间(PSR-4)。包括一个完全向后兼容层,并且仍然支持旧的PSR-0类名。然而,使用旧的PSR-0类名将生成一个弃用通知。

如果您的插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件或主题使用WordPress本机wp_远程_*()函数,则无需执行任何操作。

如果你的插件或主题直接使用Requests,并且只支持WordPress的最新版本,你应该更新你的代码以使用命名空间名称。例如,要使用命名空间名称执行带有try-catch的请求:

//旧:使用Requests 1.x中的try-catch执行请求。尝试{$response=请求::请求($url、$headers、$data、$type、$options);}catch(Requests_Exception$e){return new WP_Error('http_request_failed',$e->getMessage());}//新建:使用Requests 2.x中的try-catch执行请求。尝试{$response=WpOrg\Requests\Requests::请求($url、$headers、$data、$type、$options);}catch(WpOrg\Requests\Exception$e){return new WP_Error('http_request_failed',$e->getMessage());}

如果你的插件或主题直接使用Requests并支持更广泛的WordPress版本,你可能需要有条件地声明请求_沉默_PSR0_弃用常量为真的以使有关旧PSR-0类名的弃用通知静默。一旦WordPress6.2成为插件或主题的最低WordPress版本,您应该立即升级代码。

if(!已定义('REQUESTS_SILENCE_PSR0_DEPRECATIONS')){define('REQUESTS_SILENCE_PSR0_DEPRECATIONS',true);}

目录结构更改

wp-includes/类请求.phpwp-includes/Requests/library/Requestes.php已在WordPress 6.2中弃用。

类和接口文件/目录已被移动。

  • 旧位置:wp包含/请求/.
  • 新位置:wp-includes/Requests/src/.

这个请求类文件现在位于wp-includes/Requests/src/Requests.php.

新的最小值菲律宾比索菲律宾比索 WordPress主要使用的web脚本语言。WordPress需要PHP 5.6.20或更高版本版本

Requests 2.0.0放弃了对PHP 5.2–5.5的支持,新的PHP最低支持版本现在是5.6。

现在,对HHVM的支持也已正式取消。

现在标记了许多类最终的

大量类被标记为最终的这些更改是在研究插件和主题作者正在扩展哪些类之后做出的,并且在做出这些更改之前进行了尽职调查。

如果此更改导致意外问题,请打开问题进行报告.

更严格的输入验证

现在,Requests中的所有典型入口点方法都将直接或间接验证收到的输入参数的类型是否正确。

当接收到不正确的参数类型时WpOrg\请求\异常\无效参数将引发异常。

输入验证设置得相当自由,因此如果按照文档使用Requests,则此更改不会影响您。如果您仍然发现输入验证过于严格,并且您很清楚为什么应该针对特定入口点放宽输入验证,请打开一个问题来讨论这个.

PHP 8.x兼容性

请求2.x与PHP 8.0、8.1和8.2兼容。

关于捆绑证书的说明

虽然Requests 2.0.0–2.0.5的变更日志提到捆绑证书的更新,但WordPress使用自己的捆绑证书,因此这些更新不会影响插件或主题。

完整的变更日志

道具到@jrf公司@希腊罗马帝国同行评审,至@前列腺增生,@网络通信卫星、和@米兰_卡普供审查。

#6-2,#开发说明,#开发注释-6-2

模式API已扩展为包含template_types属性

模式美国石油学会美国石油学会 API或应用程序编程接口是一种软件中介,允许程序相互交互并以有限的、明确定义的方式共享数据。是WordPress中的一个强大功能,允许开发人员创建预先设计的内容块,可以轻松插入到帖子、页面、自定义帖子类型和模板中。随着WordPress 6.2的引入,Patterns API已经扩展为包括模板类型属性。该属性允许模式开发人员指定其模式适合的模板。例如,模式可以声明其用途是用于404模板或作为作者模板等。支持WordPress层次结构中的任何模板。

这是一个仅限后端的更新。关于用户体验用户体验 用户体验部件正在进行中,并将在未来提供古腾堡古腾堡 古腾堡项目是WordPress的新编辑器界面。编辑器改进了创建新内容的过程和体验,使编写丰富内容变得更加简单。它使用“块”来增加丰富性,而不是短代码、自定义HTML等。https://wordpress.org/gutenberg/版本–预计将在WordPress 6.3中到达站点编辑器。API提供WordPress核心核心 核心是运行WordPress所需的一组软件。核心开发团队构建WordPress。有关模式和模板关系的信息。此信息可用于多种目的。考虑到WordPress 6.3,第一个用法是在用户开始创建模板时,向用户显示一些在模板上有意义的模式。用户可以从模式开始,而不是“空白”或后备模板。

技术细节

Patterns API的register_block_pattern()函数已更新为包含新的模板类型参数。此参数是一个字符串数组,其中包含模板的目标模板名称,例如404、author等。此参数模板类型是可选的,使用它注册模式不是必需的。

这个REST APIREST API REST API是RESTful Application Program Interface(API)的缩写,它使用HTTP请求获取、输出、POST和删除数据。这是应用程序前端(想想“手机应用程序”或“网站”)如何与数据存储进行通信(想想“数据库”或“文件系统”)https://developer.wordpress.org/rest-api/.还扩展了,以返回模式的模板类型(如果定义了模板类型)。

测试

  1. 激活Twenty Twenty-One主题。
  2. 在主题中inc/block-patterns.php公司文件,在现有调用之后寄存器块模式(),使用下面的代码片段添加示例测试模式(图1). 保存文件。
  3. 打开帖子编辑器,然后打开浏览器的开发工具(Chrome)或Web开发工具(Firefox)控制台。
  4. 在控制台中,输入以下内容以检索注册的模式:wp.apiFetch({path:'/wp/v2/block-patters/patterns'}).then(console.log);
  5. 验证API响应是否包括模式查询/模板类型测试、和模板类型404列出(图2).

图1:二十一个测试代码段

寄存器块模式('查询/模板类型测试',阵列(‘title’=>__(‘模板类型测试’,‘twenty-twenty-one’),“templateTypes”=>数组(“404”),“内容”=>“<!--wp:段落{“align”:“center”,“fontSize”:“x-large”}--><p class=“has-text-align-center has-x-large-font-size”>404</p><!-- /wp:段落-->',));

图2:Developer Tools控制台中的API响应输出选项卡

示例代码的Developer Tools控制台输出的屏幕截图

道具到@铁编程器编写这些详细说明,@桶/小时@网络通信卫星供审查

#6-2,#开发说明,#开发注释-6-2

块检查器选项卡简介

新的 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。“检查器”选项卡旨在帮助组织和描述块检查器中的设计工具侧边栏边栏 WordPress中的侧边栏是指WordPres主题使用的小部件可读区域,用于显示不属于主内容的信息。它并不总是侧面的垂直柱。它可以是内容区域、页脚、页眉或主题中任何位置下方或上方的水平矩形。。在这些标签出现之前,侧边栏变得越来越拥挤,使用起来也越来越困难。随着WordPress 6.2的发布,您将发现检查器的设计工具分为三个选项卡;

  • 设置–包含与外观无关的块的配置设置,例如列数或块是否链接到其他资源。
  • 外观–将与当前块外观样式相关的面板和控件分组,例如排版和颜色。
  • 列表视图–包含用于以与编辑器列表视图类似的方式管理块的子项的控件,例如编辑导航块中的子菜单和链接。

块检查器选项卡显示

块检查器只会在有意义的情况下渲染选项卡。因此,它们的显示有几个条件:

  • 只有包含要显示的项时,才会呈现选项卡。
  • 如果“设置”选项卡只包含“高级”面板,则会将其合并到“外观”选项卡中。
  • 如果块检查器只显示一个选项卡,则不会渲染选项卡。相反,设计工具将直接呈现到侧栏中,就像WordPress 6.2之前那样。

“块检查器”选项卡可能对所有块都没有意义。插件也可能旨在彻底检查块的可用工具。在这些情况下,最好禁用“块检查器”选项卡。这可以通过新的编辑器设置实现块检查器选项卡。这样做的一种方法可能是通过块编辑器设置全部 滤波器过滤器 过滤器是两种挂钩之一https://codex.wordpress.org/Plugin_API/挂钩。它们为函数修改其他函数的数据提供了一种方法。它们是Actions的对应物。与Actions不同,过滤器是以孤立的方式工作的,不应该有副作用,例如影响全局变量和输出。,如下面的示例所示。

函数my_plugin_disable_tabs_for_my_custom_block($设置){$current_tab_settings=_wp_array_get($settings,数组('blockInspectorTabs'),数组());$settings['blockInspectorTabs']=数组_合并($current_tab_settings,数组('my-plugin/my-custom-block'=>false));返回$settings;}添加过滤器('块_编辑器_设置_全部','我的plugin_disable_tabs_for_my_custom_block');

如果可用,“块检查器”选项卡将按以下顺序显示:;列表视图、设置和外观。默认选中的选项卡将是第一个可用的选项卡。对于大多数块,这将是“设置”选项卡。

检查员控制组

The 检查员控制组已成为新的默认体验和功能的需求,例如块检查器选项卡导航块的非画布编辑器。因此__实验组物业已稳定。您现在可以定义检查员控制通过道具。

除了稳定__实验组属性,新样式组已添加,因此样式相关的控件在概念上不适合块支持面板;边框、颜色、尺寸、排版等可以包含在块检查器的“外观”选项卡下。

<InspectorControls group=“styles”>//在此处添加与自定义样式相关的控件。</InspectorControls>

块检查器选项卡与检查器控制组

每个块检查器选项卡负责显示可用检查器控件组的子集。

  • 设置选项卡–包括呈现到违约,设置(默认为别名),先进的,或位置组。
  • “外观”选项卡–渲染块支持组,例如:; 边境颜色尺寸、和印刷术。它现在还包括新的样式组,它提供了一种在“外观”选项卡下但在块支撑面板外部显示项目的方法。
  • 列表视图选项卡–仅包括列表组,因为此选项卡仅用于需要管理列表中自己的子级的块。

仅设置块

在试用“块检查器”选项卡的实验过程中,很明显,某些块应被视为“仅设置”。Query块就是一个很好的例子。用户与此块交互时的主要关注点是将其配置为显示所需的帖子。尝试在如此高的水平上应用样式(例如颜色)会导致不一致的结果。

为了缓解前进中的摩擦已从Query块中删除颜色块支持,仅设置。添加了一个新的弃用项,以迁移具有颜色样式的现有查询块。它们的内部块将被包裹在应用了原始颜色的Group块中。

对于仅被视为设置的块,向前设置样式的推荐方法是将内部块包装在样式提供器块中,例如Group。

屏幕截图

设置和样式

默认(带图标)
纯文本标签

列表视图、设置和样式

默认(带图标)
纯文本标签

道具到@前列腺增生@网络通信卫星供审查

#6-2,#开发说明,#开发注释-6-2

WordPress 6.2中的全局样式阴影

阴影是设计的重要组成部分,它们有助于建立内容的层次结构,并有助于将重点放在网站的特定区域。使用WordPress 6.2,现在可以使用全局样式和主题为某些块添加和修改阴影。杰森JSON格式 JSON或JavaScript Object Notation是结构化数据的最小可读格式。它主要用于在服务器和web应用程序之间传输数据,作为XML的替代。.

在theme.json中使用

要使用theme.json应用阴影,可以将其添加到 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。的定义:

“样式”:{“区块”:{“核心/按钮”:{“阴影”:“2px 2px#000000”}}}

主题还可以如下定义预设阴影:

“设置”:{“阴影”:{“预设”:[{“name”:“影子名称”,“鼻涕虫”:“鼻涕虫”,“影子”:“5px 5px 0px-2px#FFFFFF,5px 5px#000000”}]}}

如果您的主题提供了预设然后块可以这样使用:

“样式”:{“区块”:{“核心/按钮”:{“shadow”:“var(--wp--preset--shadow--slug)”}}}

在全局样式中使用

用户还可以使用全局样式修改这些样式用户界面用户界面 用户界面.

引导到样式>块>按钮你会看到一个阴影选项:

当您选择“阴影”选项时,您将能够从各种不同的阴影预设中进行选择:

注意:这目前仅在按钮块上可用。有计划将其用于更多区块。

道具到@前列腺增生@网络通信卫星供审查。

#6-2,#开发说明,#开发注释-6-2

在WordPress 6.2中引入HTML API

这篇文章是由Adam Zielinski合著的@齐拉达姆和Dennis Snell@dmsnell公司

WordPress 6.2介绍WP_HTML_Tag_处理器–用于 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。作者进行调整HTML格式HTML格式 超文本标记语言。主要用于在web浏览器中输出内容的语义脚本语言。 标签标签 Subversion中的目录。WordPress使用标签来存储版本(3.6、3.6.1等)的单个快照,这是版本控制系统中标签的常见约定。(不要与帖子标签混淆。)块标记中的属性菲律宾比索菲律宾比索 WordPress主要使用的web脚本语言。WordPress需要PHP 5.6.20或更高版本。它是新HTML处理中的第一个组件美国石油学会美国石油学会 API或应用程序编程接口是一种软件中介,允许程序相互交互并以有限的、明确定义的方式共享数据。.

在WordPress中更新HTML总是需要使用令人不舒服的工具。正则表达式很难,并且容易出现各种错误。DOM文档资源量很大,无法正确处理现代HTML,并且在许多托管平台上不可用。

WP_HTML_Tag_处理器迈出了弥合这一差距的第一步。

标记处理器可以可靠地更新HTML属性

标记处理器可以找到特定的标记并更改其属性。下面是一个设置中高音第一个上的属性国际货币基金组织HTML块中的标记。

$html='<img src=“/husky.jpg”>';$p=新的WP_HTML_Tag_Processor($HTML);if($p->next_tag()){$p->set_attribute('alt','Husky in the snow');}echo$p->get_updated_html();//输出://<img alt=“雪地里的哈士奇”src=“/Husky.jpg”>

这个下一个标签()方法移动到HTML中的下一个可用标记,但也接受标记名、CSS公司CSS公司 级联样式表。类,或两者兼而有之以查找特定标记。根据HTML规范,标签和属性名称的查找不区分大小写,但CSS类名是区分大小写的。

if($p->next_tag(数组(“tag_name”=>“DIV”,“class_name”=>“block-GROUP”)){$p->remove_class(“块组”);$p->add_class('wp-block-group');}

默认情况下,操作是安全的:

  • 删除属性而不首先检查它是否存在,
  • 添加可能已经存在的CSS类,
  • 设置属性值,但不确保它与现有属性值重复。

您不再需要担心您的代码会出现实际标记错误<文本区域>,和属性值,甚至在HTML注释中。

标记处理器符合HTML5规范,所以您不必这样做。它会在必要时自动转义和解码值,并知道如何处理格式错误的标记。

$ugly_html=<<<html<textarea title=“元素在语义上无效”><div><--<div属性-->=“</div>”></text区域><div>HTML;$p=新的WP_HTML_Tag_Processor($ugly_HTML);if($p->next_tag('div')){$p->add_class(“粗体”);}echo$p->get_updated_html();//输出://<textarea title=“元素在语义上无效”>//<div><--<div属性-->=“</div>”>//</text区域>//<div class=“bold”></div>

Tag Processor的运行速度足够快,可以在关键的热代码路径中运行,几乎不会产生内存开销。在WordPress 6.2中,它取代了缺陷缺陷 错误是错误或意外结果。性能改进、代码优化和被视为增强,而不是缺陷。功能冻结后,只处理bug,回归(与前一版本相比的不利变化)是最高优先级。-易于使用的代码依赖正则表达式和字符串搜索来执行类似的更新。

要更高级地使用标记处理器,请阅读大量的课堂文档并学习如何…

  • …设置书签以重新查看文档中已扫描和修改的部分。
  • …访问结束标记,如</div>除了打开标签之外。
  • …通过访问文档中的每个标记来运行高级和有状态查询。

进一步考虑

Tag Processor没有做很多事情:它不会构建DOM文档树、查找嵌套标记或更新标记的内部HTML或内部文本。与HTML相关的新API的工作仍在继续,未来的WordPress版本将在此基础上实现从PHP中访问块的所有属性(如果块提供块.json文件),使用CSS选择器查找标记,并使用新标记、删除的标记和更新的内部标记修改HTML结构。

你可以跟上通过此概述问题进行进一步开发古腾堡古腾堡 古腾堡项目是WordPress的新编辑器界面。编辑器改进了创建新内容的过程和体验,使编写丰富内容变得更加简单。它使用“块”来增加丰富性,而不是短代码、自定义HTML等。https://wordpress.org/gutenberg/ githubgithub GitHub是一个提供git存储库在线实现的网站,其他开发人员可以轻松共享、复制和修改这些存储库。公共存储库可以免费托管,私有存储库需要付费订阅。GitHub引入了“拉请求”的概念,在将贡献者在分支中所做的代码更改合并为存储库所有者之前,可以对其进行审查和讨论。https://github.com/回购。

#6-2,#开发说明,#开发注释6-2

WordPress 6.2中的其他编辑器更改

在这个开发说明开发说明 WordPress Core中的每个重要更改都记录在开发人员备注中(通常称为开发备注)。好的开发注释通常包括对更改的描述、导致此更改的决策,以及对开发人员应该如何处理此更改的描述。在WordPress发布周期的测试阶段,开发人员的笔记会发布在Make/Core博客上。当插件/主题作者和WordPress开发人员需要了解这些更改时,发布开发注释尤其重要。通常,所有开发注释都在候选发布阶段开始时编译到Field Guide中。,您将发现对现有功能和已弃用的API和组件的较小更改的集合。


目录


流体排版最小字体大小

从中引入的流体排版设置开始WordPress 6.1,WordPress 6.1.1为14px的流动排版规则引入了一个硬编码的最小值,以确保生成的排版规则不会导致字体大小太小,无法在较窄的视口中读取。

在WordPress 6.2中,主题可以为流畅的排版规则定义自己的最小字体大小。根据主题的要求,有时所需的最小字体大小值可能大于或小于提供的默认值14px。使用最小字体大小时,任何使用的小于或等于最小字体大小的字体大小都将直接输出为该字体大小。对于大于最小字体大小的字体,最小字体大小将用作流体排版计算规则的底线。

如何在主题中使用最小字体大小

主题内。杰森JSON格式 JSON或JavaScript Object Notation是结构化数据的最小可读格式。它主要用于在服务器和web应用程序之间传输数据,作为XML的替代。现在,属性settings.typrography.fluid除了接受现有布尔值之外,还接受一个对象。将fluid设置为true将使用默认的最小字体大小14px;然而,主题现在可以为对象提供最小字体大小改为属性:

{“设置”:{“排版”:{“流体”:{“最小字体大小”:“15px”}}}}

使用最小字体大小属性设置为15px,在上面的示例中,段落的输出 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。设置为15px字体大小如下,不应用流动规则:

<p style=“font-size:15px”>15px处的段落</p>

将段落块的输出设置为16px将导致应用流体规则,但最小字体大小为15px:

<p style=“font-size:clamp(15px,0.938rem+((1vw-7.68px)*0.12),16px);”>16px处的段落</p>

道具到@安德鲁斯隆用于开发注释(顶部)

调整灵活布局子项的大小控件

添加了一个新的布局功能,允许具有Flex类型布局的容器块的子级提供控件,以更改其在父块中的相对大小。可以在block.json中的__terialLayout设置中将此功能添加到容器块中,如下所示:

“__terialLayout”(__terial布局):{“allowSizingOnChildren”:true,“默认”:{“type”:“flex”}}

然后,子块的控件将显示在块的“尺寸”面板下侧边栏边栏 WordPress中的侧边栏是指WordPres主题使用的小部件可读区域,用于显示不属于主内容的信息。它并不总是侧面的垂直柱。它可以是内容区域、页脚、页眉或主题中任何位置下方或上方的水平矩形。。如果父对象的方向是水平的,则控件将显示为“宽度”,如果是垂直的,则控件将显示为“高度”。

此控件中有三个选项:

  • “Fit”是默认值,表示块将只占用与其内部尺寸相同的空间;
  • “填充”使块拉伸以占用其父级中所有剩余的可用空间;
  • “固定”允许以px、%、em、rem、vw或vh单位设置固定宽度或高度(取决于父级的方向)。

(#45364)

道具到@isabel_监狱用于开发说明(顶部)

wp-block标题CSS公司CSS公司 级联样式表。类添加到每个标题块

在WordPress 6.2中,通过标题块添加的h1-h6元素有一个全新的wp-block-heading CSS类。

此更改使标题块的样式与常规h1-h6元素不同。例如,以下主题.json将为所有h1元素添加蓝色背景,仅为通过封面块添加的h1元素增加粉红色背景:

{“样式”:{“元素”:{“h1”:{“颜色”:{“background”:“蓝色”}}},“区块”:{“芯/盖”:{“元素”:{“h1”:{“颜色”:{“background”:“粉红色”}}}}}}}

在未来的WordPress版本中,正在为每个块添加一个CSS类。 ( #42122)

道具到@齐拉达姆将Dev Note发送给@阿杰伦德 @邋遢鬼供审查(顶部)

wp_theme_has_theme.json()

WordPress 6.2引入了一种新方法,称为wp_theme_has_theme.json()返回活动主题或其父主题是否具有主题.json文件。目标是为第三方提供美国石油学会美国石油学会 API或应用程序编程接口是一种软件中介,允许程序以有限的、明确定义的方式相互交互和共享数据。他们可以使用查询活动主题以获取此信息。它不推荐使用私有APIWP_Theme_JSON_Resolver:Theme_has_support()。详细信息请参阅采购订单号45168

从theme.json编辑块样式变体

这个新的theme.json API允许现有的核心核心 核心是运行WordPress所需的一组软件。核心开发团队构建WordPress。直接从主题.json文件。目前不允许添加新变体。应添加如下样式:

每个变体都应该以其名称为目标,可以在块的块.json文件,在“样式”下。

“样式”:{“区块”:{“核心/图像”:{“变化”:{“四舍五入”:{“边界”:{“宽度”:“10px”,“颜色”:“#cc3ee6”}	}}}}}

还有一个对应的用户界面用户界面 用户界面在全局样式的块部分,您可以在屏幕截图中看到。(#46343)

上午10点23分55分截图2023-03-03
图形:编辑图像块的样式变化

道具到@isabel_监狱用于开发说明(顶部)

更新了API的缓存行为,以访问全局样式和设置。

添加了WordPress 5.9用于访问全局设置和样式的新API在6.2中,他们收到了缓存行为的更新:

  • wp_get_global设置=>现在每个请求都缓存结果(也称为非持久缓存),因此速度更快。
  • wp_get_global_样式表=>结果现在是每个请求缓存(也称为非持久),而它是使用1分钟瞬态缓存的。这导致了现在已经修复的错误(站点编辑器中的更改直到1分钟后才反映在前面)。
  • wp_get_global样式svg过滤器=>现在每个请求都缓存结果(也称为非持久缓存),而它是使用1分钟瞬态缓存的。虽然这并没有导致任何已知的错误,但已对其进行了更新以进行尽职调查。

此跟踪问题中提供了更多详细信息#45171

道具到@奥安德雷格尔对于开发说明(顶部)

切换主题时保持导航

当用户切换主题时,无论是块主题还是经典主题,站点上的导航都应该保持不变。为了使用户能够从经典主题切换到块主题,我们对导航块从经典主题导入菜单的方式做了一些进一步的改进。

如果站点具有经典菜单,并且尚未使用导航块创建导航,则导航块将自动导入要使用的经典菜单。许多经典主题(例如TT1)使用主名称和slug作为其主菜单位置的约定。如果站点在此位置定义了经典菜单,则导航块将导入此菜单。如果没有,那么它将使用最近创建的经典菜单。

决定导入哪个经典菜单的条件是:

  1. 如果没有wp_导航菜单存在
  2. 如果主题在名为初级的,否则使用它
  3. 使用最近创建的经典菜单

如果满足这些条件,导航块将显示经典菜单,并自动将其转换为导航菜单导航菜单 3.0版引入的主题功能。WordPress包含一个易于使用的机制,用于提供各种控制选项,让用户在站点上从一个位置单击到另一个位置。。通过公关了解更多细节(#45976)

道具到@邋遢鬼@jffng公司内容(顶部)

禁用Openverse类别类别 “类别”分类法允许您将共享共同链接的帖子/内容分组在一起。类别是预定义的,范围广泛。在新的“媒体”选项卡中

除了块和模式之外,在WordPress 6.2中,插入器还显示了一个新的媒体选项卡,使用户可以快速访问媒体库中的图像、视频和音频文件。它允许用户浏览和搜索Openverse目录中的Creative Commons授权图像。Openverse媒体类别可以通过新的公共块编辑器设置进行控制(启用OpenverseMediaCategory). 默认情况下显示此类别,但可以通过更新此设置的值来关闭此类别。(#47404)

settings=wp.data.select('core/block-editor').getSettings();wp.data.dispatch('核心/块编辑器').updateSettings({…设置,enableOpenverseMediaCategory:false});
添加筛选器('块编辑器设置_全部',函数($设置){$settings['enableOpenverseMediaCategory']=false;返回$settings;},10);

其他块编辑器设置在手册中列出。

道具到@ntsekouras公司用于开发说明(顶部)

修复了块移除后的焦点问题。

在WordPress 6.2中删除块()改变。在此之前,当删除块时,会选择上一个块并在用户界面中获得焦点。有时,如果之前没有可用的块,则会导致焦点丢失,这在使用屏幕阅读器时是一种特别困难的体验。

通过此更新删除块()操作已更改为选择第一个父级。对于编写自定义块的开发人员,或根据删除块操作,这可能需要更新其代码,以考虑有时在删除块时选择父级的可能性。有一种方法可以通过传递作为第二个参数删除块()功能。

核心/列表块的示例代码。

const should SelectParent=false;删除块(parentListId,shouldSelectParent);

中的详细信息#48204
文件删除块()

道具到@安道拉甘内斯库用于初稿,并发送至@网络通信卫星供审查(顶部)

错误修复:全局样式管理员管理员 (和超级管理员)多站点上的用户

在WordPress 6.1中布局块支持已重构输出块间距的CSS值,并提供全局样式中的其他布局控件。这导致了缺陷缺陷 错误是错误或意外结果。性能改进、代码优化和被视为增强,而不是缺陷。功能冻结后,只处理bug,回归(与前一版本相比的不利变化)是最高优先级。对于没有未筛选html功能(例如多站点多站点 用于描述WordPress安装,该安装包含多个博客网络,按站点分组。此安装类型具有共享用户表,并为每个博客创建单独的数据库表(wp_posts变为wp_0_posts)。另请参见网络,博客,网站实例)在全局样式界面中更新时,块间距或布局内容大小未保存。(#45520)原因是在Theme JSON类中主题.json为没有未筛选html基于对直接CSS属性的查找的功能,例如边缘衬垫。对于布局功能,样式规则存储在间接的不直接映射到真实CSS属性的属性,例如块间隙内容大小.

对于WordPress 6.2(后移植到WordPress6.1.2),这个问题可以通过存储间接属性列表的Theme JSON类来解决(间接_属性_元数据),在用于验证的CSS属性和存储在中的间接属性的路径之间进行映射主题.json.这样块间隙将根据CSS进行验证缺口属性,以及内容大小针对CSS最大宽度财产等。

对于使用布局功能的主题,不需要更改,因为bug修复是如何验证和输出主题JSON样式的内部实现细节。

请参见#46388,#46712

道具到@安德鲁斯隆用于开发说明(顶部)

删除弃用的API和组件

RichText组件中的格式化属性

格式属性在WordPress 5.4版本中已被弃用,从WordPress6.2开始不再可用。如果要在使用超文本组件,使用允许的格式道具。(#46106)

道具到@你知道riad用于开发注释(顶部)

使用锚引用6.3中未删除挂钩

已弃用使用锚引用钩子从@文字印刷/rich-text这个包不会像最初计划的那样在WordPress 6.3中删除。(#45302)

日期输入框已弃用的支柱拆除推迟至6.3

移除__下一步删除帮助按钮__next删除重置按钮上的道具日期输入框中的组件@wordpress/组件,最初计划为古腾堡古腾堡 古腾堡项目是WordPress的新编辑器界面。编辑器改进了创建新内容的过程和体验,使编写丰富内容变得更加简单。它使用“块”来增加丰富性,而不是短代码、自定义HTML等。https://wordpress.org/gutenberg/14.6,已推迟到Gutenberg 15.8版本。(#46006)

道具到@麦钱皮尼对于上述开发注释(顶部)

不推荐非字符串描述

在WordPress 6.2中,不推荐使用非字符串作为块描述。

以前,我们可以注册带有非字符串描述的块(例如反应反应 React是一个JavaScript库,它使推理、构造和维护无状态和有状态用户界面变得容易。https://reactjs.org/.节点或任何其他JavaScript脚本JavaScript脚本 JavaScript或JS是一种面向对象的计算机编程语言,常用于在web浏览器中创建交互效果。WordPress广泛使用JS以获得更好的用户体验。当PHP在服务器上执行时,JS在用户浏览器中执行。https://www.javascript.com/.对象)。另一种实现方法是使用块.register块类型 滤波器过滤器 过滤器是两种挂钩之一https://codex.wordpress.org/Plugin_API/挂钩。它们为函数修改其他函数的数据提供了一种方法。它们是Actions的对应物。与Actions不同,过滤器是以孤立的方式工作的,不应该有副作用,例如影响全局变量和输出。用非字符串更改描述。

虽然可能有一些利基边缘案例发现非字符串描述很有用,但贡献者发现这可能会导致意外错误,因此决定弃用它。这使得块描述的推荐类型更明确一串只有。

有关上下文和更多信息,请参阅#44455#44233. (顶部)

删除导航编辑器屏幕和相关软件包

导航编辑器屏幕是Gutenberg的一个实验功能插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件贡献者们致力于作为经典作品的潜在替代品菜单使用基于块的范例进行筛选。此功能的代码存在于专用@文字新闻/编辑导航包。

然而,随着导航项目的发展,对专用屏幕的要求变得不那么明显,最初为屏幕提议/包含在屏幕中的功能被纳入导航块本身。

在6.1周期中,由于缺乏贡献,该实验在插件中被从实验Gutenberg插件设置页面中的屏幕。

随着WordPress 6.2中导航块的列表视图编辑的到来,现在可以在编辑器画布之外编辑菜单,因此,现在是时候正式从代码库中删除这个实验了。

The @文字新闻/编辑导航包现在已从Gutenberg存储库中删除,然后关联的包未从中发布净现值法. (#47055)

道具到@获取_保存内容,@安道拉甘内斯库@塔尔丹普供审查(顶部)


对完整帖子进行审查的建议@麦恰姆皮尼@网络通信卫星

#6-2,#开发说明,#开发注释-6-2

在WordPress 6.2中引入move_dir()

这个问题

引入WordPress 2.5copy_dir()用于将目录从一个位置复制到另一个位置。此函数递归创建必要的子目录,并将文件复制到新文件夹中各自的位置。

但是,以前没有用于移动适用于所有文件系统的目录。这意味着核心核心 核心是运行WordPress所需的一组软件。核心开发团队构建WordPress。和扩展器,必须使用copy_dir(),然后删除原始版本。 

移动目录不需要太多内存、磁盘空间、时间或文件操作。它应该快速、易于调用且可靠。

解决方案

WordPress 6.2版(#57375)介绍了移动_目录()函数,具有以下参数:

  • (字符串)–目录的当前位置。
  • (字符串)–目录的新位置。
  • 覆盖(bool)–是否覆盖目的地。默认为false。

函数将返回真的成功,或WP_错误对象失败。

故障包括:

  • $来自$至都是一样的。
  • $覆盖目的地已存在。
  • $覆盖真的,并且无法删除现有目标。
  • 如果回落到copy_dir()无法创建目标。

你怎么用它?

如果您打算使用移动_目录(),且目标尚未删除,则必须使用调用它$覆盖作为真的.

$result=移动目录($from,$to,$overwrite);if(iswp_error($result)){返回$result;}

你什么时候可以开始使用它?

您可以立即开始替换复制()并使用删除移动_目录()期待WordPress 6.2的发布。

一如既往,在将代码发布给生产/用户之前,请执行足够的测试以确保代码继续按预期工作。这包括对所有WordPress 6.2候选版本进行测试。

它在Core中的何处使用?

移动_目录()现已在WP_Upgrader::install_package()中的方法#57557。这会影响所有升级路径,减少磁盘空间和内存使用,并在更新插件、主题和语言包时提高速度以减少资源较少的系统上的超时。

如果扩展器设置清除工作,或者目标存在并且包含内容,则升级将使用copy_dir()而不是。

这不能替代copy_dir()在Core更新中,因为有几个区域在该过程中没有复制特定的子目录。

发动机罩下

移动_目录()使用::移动()方法WP_文件系统_直接,WP_文件系统_文本,WP_文件系统_套接字、和WP_文件系统_SSH2文件系统抽象。

这不仅比移动目录的组合更直观copy_dir()和删除,但它也明显地速度更快,并且在服务器上使用更少的磁盘空间和内存。

使用新引入的wp_opcache_invalidate_directory()功能。在Miscellaneous中了解有关此函数的更多信息开发人员备注开发说明 WordPress核心中的每一个重要更改都记录在开发者注释中(通常称为开发注释)。好的开发注释通常包括对更改的描述、导致此更改的决策,以及对开发人员应该如何处理此更改的描述。在WordPress发布周期的测试阶段,开发人员的笔记会发布在Make/Core博客上。当插件/主题作者和WordPress开发人员需要了解这些更改时,发布开发注释尤其重要。通常,所有开发注释都在候选发布阶段开始时编译到Field Guide中。用于WordPress 6.2。

如果移动操作失败,移动_目录()回落到copy_dir().如果copy_dir()成功,则删除源目录。

虚拟机

在开发此功能时,核心开发人员遇到VirtualBox中一个众所周知的问题,其中文件存在和元数据在移动后可能不会更新。 

这产生了一个极具破坏性的结果将A移动到C,将B移动到A,删除C已通过使用菲律宾比索菲律宾比索 WordPress主要使用的web脚本语言。WordPress需要PHP 5.6.20或更高版本重命名()取消链接()功能。

移动_目录()利用对的调用文件大小()文件时间()WP_Filesystem_*::目录()调用了方法wp_opcache_invalidate_directory()以解决延迟的元数据更新。文件存在警告在移动目录后以200ms的延迟得到解决,这为文件系统的缓存提供了更新时间。

这个缺陷缺陷 错误是错误或意外结果。性能改进、代码优化和被视为增强,而不是缺陷。功能冻结后,只处理bug,回归(与前一版本相比的不利变化)是最高优先级。VirtualBox专有。VirtualBox 6和7中的广泛测试表明移动_目录()不会遇到此错误,并且可以安全使用。

道具到@米兰_卡普@网络通信卫星供审查。

#6-2,#开发说明,#开发注释-6-2

粘滞位置块支架

WordPress 6.2新增职位 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。支持功能,从支持粘性定位开始,默认情况下选择Group块。对于使用外观工具中的功能主题.json,现在可以将Group块设置为“sticky”。粘性定位功能如下的CSS行为位置:粘性当用户向下滚动页面时,它将元素设置为紧贴其直接父元素(在本例中为块的直接父元素)。

因为它可能是一个潜在的混淆功能,对于WordPress 6.2,定位控件只会显示给分组块位于文档的根。创建粘性收割台标题 你网站的标题通常是人们第一次体验到的东西。位于页面顶部的刊头或页眉是网站外观的一部分。它可以影响访问者对您的内容和您/您组织的品牌的看法。它在不同的屏幕尺寸上也可能看起来不同。在站点模板中,构建主题或站点的人员可以将标题模板部分包装在Group块中,并将Group块设置为“sticky”。

这只是位置块支持功能的开始,对于未来的增强有一些想法,包括推出粘性到非根块,以及改进用户体验用户体验 用户体验建筑物周围的粘性地头。这里有未决问题在中古腾堡古腾堡 古腾堡项目是WordPress的新编辑器界面。编辑器改进了创建新内容的过程和体验,使编写丰富内容变得更加简单。它使用“块”来增加丰富性,而不是短代码、自定义HTML等。https://wordpress.org/gutenberg/回购以跟踪6.2之后的进度。

如何向主题添加粘性位置支持

有两种方法可以为块主题添加对粘滞位置的支持。最简单的方法是选择加入外观工具设置,自动启用多个设计工具(阅读开发人员手册中的更多内容).

对于希望更精细地控制哪些内容的主题用户界面用户界面 用户界面工具启用后,可以通过设置选择粘滞位置支持设置.位置.粘滞真的主题.json。例如:

{“设置”:{“位置”:{“sticky”:真

它是如何工作的?

当用户通过检查器控件中的下拉列表将块设置到粘滞位置时,将输出位置:粘性,一个顶部的位置0像素(对于已登录的帐户有一个抵消管理员管理员 (和超级管理员)bar)和硬编码z索引的值10以确保粘性块位于其他内容之上,同时在管理UI中仍能正常工作。尚不支持控制自定义z索引值。

为了支持这些位置属性的输出安全样式.css 滤波器过滤器 过滤器是两种挂钩之一https://codex.wordpress.org/Plugin_API/挂钩。它们为函数修改其他函数的数据提供了一种方法。它们是Actions的对应物。与Actions不同,过滤器是以孤立的方式工作的,不应该有副作用,例如影响全局变量和输出。 已在核心中更新以支持位置顶部正确的底部左边、和z索引属性。

渲染块时输出样式规则,并输出类名正位粘稠注入到块标记中。对于希望添加自定义的主题CSS公司CSS公司 级联样式表。以粘性定位的组块为目标,这可以通过使用类似的选择器来实现.wp-block-group.is-position-sticky(.wp-块-组-位置-粘滞).

为什么古腾堡去除了对非根粘性块的支持?

在古腾堡开发该功能时插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件,粘性定位最初在块的所有层次结构中启用。然而,在手动测试中,反馈表明,如果用户不小心将非根块设置为sticky,或者将块设置为sicky,那么如果没有额外的UI或UX工作,那么用户可能会对创建sticky头感到困惑在内部要粘贴的页眉模板部分。决定将该特性缩小到6.2的根块,以便有更多时间探索适合嵌套块的解决方案。请参见古腾堡问题的讨论了解更多上下文。

为什么定位在全局样式中不可用?

位置块支持设计为在单个块属性中设置,因为位置通常是为单个块设置的,而不是为特定块类型全局设置的。因此,在主题.json位置设置可以用于选择使用位置支持,但块的位置样式不能在全局样式中设置。它应该在单独的组块级别设置,可以在站点模板或页面或帖子中设置。

进一步阅读

道具到@前列腺增生@网络通信卫星供审查

#6-2,#开发说明,#开发注释-6-2

升级到React 18和并发模式的常见缺陷

WordPress 6.2附带版本18反应反应 React是一个JavaScript库,它使推理、构造和维护无状态和有状态用户界面变得容易。https://reactjs.org/.,的JavaScript脚本JavaScript脚本 JavaScript或JS是一种面向对象的计算机编程语言,常用于在web浏览器中创建交互效果。WordPress广泛使用JS以获得更好的用户体验。当PHP在服务器上执行时,JS在用户浏览器中执行。https://www.javascript.com/.用于构建 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。编辑器和所有自定义块。它有几个新功能、改进和缺陷缺陷 错误是错误或意外结果。性能改进、代码优化和被视为增强,而不是缺陷。功能冻结后,只处理bug,回归(与前一版本相比的不利变化)是最高优先级。修复,包括一种新的渲染算法,称为并发模式。(#45235)

在并发模式下,React执行用户界面用户界面 用户界面更新速度更快,并保持网页的响应性。当它用于大型复杂的UI更新时,它仍然可以实时处理所有用户输入(鼠标事件、滚动、键盘事件),并与它已经在做的工作同时进行。

然而,它还引入了一些开发人员需要注意的潜在陷阱,这些陷阱可能会破坏一些依赖于事件和状态更新的精确定时的组件。这些陷阱只影响一小部分复杂的专用React代码。除非您的代码依赖于特定的状态更新时间,否则几乎可以肯定,您的代码将在没有任何更改的情况下继续工作。

成批状态更新

几乎所有并发模式陷阱都与称为“批处理状态更新”的功能有关。这是什么意思?考虑这个反应成分:

函数ShowX(){const[x,setX]=使用状态(0);console.log('使用状态渲染',x);使用效果(()=>{常量句柄=setTimeout(()=>{console.log('开始设置状态');集合X(1);集合X(2);console.log('完成设置状态');    }, 1000 );return()=>clearTimeout(句柄);  }, [] );返回<div>{x}</div>;}

此组件最初将使用渲染状态0,一秒钟后,它将依次进行两次状态更新:第一次更新为1然后到2在React 17中,如果没有并发模式和自动批处理,控制台中的消息将按以下顺序记录:

呈现状态为0开始设置状态使用状态1渲染使用状态2渲染完成设置状态

每个setX调用都将立即同步触发一个组件渲染,并且将有两个渲染。脚本执行日志行时完成设置状态,两个渲染都已发生。来自集合X(1)更新也已执行。偶尔会有一些代码依赖于渲染和/或效果此时已经执行的事实。正是这种代码是并发模式错误的典型来源。因为在并发模式下,在React 18中,记录消息的顺序将非常不同:

呈现状态为0开始设置状态完成设置状态使用状态2渲染

首先,在完成设置状态正在记录消息,尚未发生任何呈现。在那个时候,它只是计划好的,还没有执行。

第二,两者集合X(1)集合X(2)更新被批处理在一起,在一批执行两个状态更新后,只使用两个最终值执行了一次渲染。这是另一个错误来源。如果代码依赖于状态的呈现1被执行,它将永远不会发生。效果也仅与21效果被跳过。

批量更新和@文字新闻/数据

批处理状态更新的一个特殊情况,通常出现在WordPress代码中,是@文字新闻/数据商店:

const counter=useDispatch(counterStore);counter.increment();

这里,发送增量操作最终导致组件内的状态更新,该组件从counterStore(柜台商店)。有时,您的代码可以依赖这样一个事实:计数器增量()调用时,所有更新和重新读取都已同步执行。但是,如上所述,在React 18并发模式下,这种情况不会立即发生。更新仅安排在此时进行。

新建美国石油学会美国石油学会 API或应用程序编程接口是一种软件中介,允许程序相互交互并以有限的、明确定义的方式共享数据。用于安装根部

如果您的插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件或者块正在将其自己的React UI装入页面,而不是导出React组件以由块编辑器呈现,您应该了解用于装入组件根的新React 18 API。旧的React 17方式提供函数来自反应室或来自@wordpress/元素:

从“@wordpress/element”导入{render};const el=document.getElementById(“root”);渲染(<App/>,el);

这仍然有效,您可以继续使用它。唯一的缺点是,您将收到有关使用React 17遗留API的控制台警告,并且以这种方式安装的React应用程序中禁用了并发模式。

React 18的方式是使用新的创建根目录应用程序编程接口:

从“@wordpress/element”导入{createRoot};const el=document.getElementById('root');const root=创建根(el);root.render(<应用程序/>);

还有一个额外的步骤:从DOM元素创建一个根,然后将JSX元素渲染到该根中。以这种方式安装的应用程序将使用新的并发模式。

还有一个用于卸载React根的新API。旧的是卸载组件位于节点(el),新的方法是调用根对象上的方法:root.unmount()

React 18中的其他新API

React 18中还有其他新的API函数,所有这些函数都由@wordpress/元素包裹:

这些都是全新的,不会带来任何向后兼容性问题。如果您想了解或想使用它们,请咨询反应18迁移指南反应文档.

道具到@你知道riad,@泰克斯拉,@前列腺增生,@米兰(_C)供审查

#6-2,#开发说明,#开发注释-6-2