25 八月

ACF 5.10版本–HTML转义、Blocks API v2、Block Preloading等!

我们很高兴地宣布,高级自定义字段版本5.10现已推出。

作者:Iain Poulson

我们很高兴地宣布,高级自定义字段版本5.10现已推出!🎉

这是针对美味大脑团队。我们在这个版本中有很多内容要介绍,所以让我们深入了解一下。

改进的安全性:默认启用HTML转义

今年早些时候,Elliot发布了一个宣布了ACF中的一项新的实验功能,以帮助防止跨站点脚本(XSS)攻击。启用后,此功能将通过WordPress运行ACF呈现的所有内容wp_kses()功能。这个功能专门用于确保在给定文本中只出现允许的HTML元素名、属性名、属性值和HTML实体。

通过此功能运行ACF呈现的任何内容可确保WordPress面板中呈现的任何内容或通过acf_form()不受可能的XSS攻击。随着WordPress的日益流行,插件开发人员必须确保其插件生成的任何内容不会使网站所有者暴露于这些类型的漏洞。

在5.10版本中,此功能不再是实验性的。默认情况下,在ACF安装时会启用它,以确保ACF呈现的内容是安全的,并且WordPress网站不会受到攻击。

重要的是要注意,这只影响ACF在WordPress仪表板中呈现的内容或通过以下方式呈现的任何前端表单acf格式()。这不会影响通过API函数加载的字段值,例如获取字段()字段(_F)。我们不会对您在主题中使用字段值的位置做出任何假设,因此也不会逃避这些假设。

此功能的实现方式也意味着可以扩展此功能。传递给的所有内容wp_kses()ACF函数的上下文为“ACF”。

函数acf_esc_html($string=''){return wp_kses((string)$string,'acf');}

通过传递“acf”作为上下文,可以使用wp_kses_allowed_html 滤波器。下面是一个示例,它允许iframe公司标记及其关联属性。

add_filter('wp_kses_allowed_html','acf_add_allowed_iframe_tag',10,2);函数acf_add_allowed_iframe_tag($tags,$context){if($context===“acf”){$tags['iframe']=数组(“src”=>true,“高度”=>真,“宽度”=>true,“frameborder”=>true,“allowfullscreen”=>true,);}返回$tags;}

有关更多信息,请参阅我们的新帮助文档HTML转义系统

ACF模块改进

ACF块现在支持WordPress块API v2

在WordPress 5.6中,块编辑器引入了一个新的块API版本2。此更新的目标是标准化编辑器内容,使其与保存的内容相匹配,从而与网站前端的呈现内容相匹配。ACF已经更新,以支持Block API的这个新版本。这会影响WordPress 5.6以上版本上使用的任何ACF块。

此更新通过支持块编辑器的过滤器例如块.getSaveContent.extraProps。这些过滤器允许您在块编辑器中编辑时更改块的行为。

虽然ACF现在支持这些块过滤器,但它只支持更新类名的财产$块ACF块模板或回调函数中的变量。

对块的任何修改通过块编辑器过滤器的属性将自动传递到现有的$块['className']属性。

您可以在我们的块API v2帮助文档.

更新(2021/08/31):在最初的发布文章中,我们指出此更新支持块样式特性。然而,由于一些CSS不一致,我们恢复了此更改,从而修改了块样式。我们计划重新引入风格5.11中的支撑。

启用块预加载

自ACF块启动以来,ACF面临的最大挑战之一是渲染ACF动态块预览所需的服务器端请求数量。这通常会导致服务器超时问题,尤其是在实现许多ACF块的页面上。

为了应对这种情况,ACF 5.10现在将预加载任何块,包括设置为编辑模式的块。使用块编辑器时,不需要发出多个后台请求来渲染ACF块。ACF块已经在初始管理页面请求期间预加载,可以在块编辑器中显示。

这是在中作为实验功能添加的ACF 5.9.2但现在是默认功能。

块的新全高设置

使用acf寄存器块类型()函数,现在可以启用对块编辑器的全高对齐设置的支持。这已添加到支架键在函数设置数组中,该数组有一个新的全高(_H)属性,可以是真的.

add_action('acf/init','acf_blocks_init');函数acf_blocks_init(){//检查功能存在。if(函数存在('acf_register_block_type')){//注册一个证明块。acf寄存器块类型(阵列(“name”=>“推荐”,“标题”=>__(“证词”),“description”=>__(“自定义证明块。”),'render_template'=>'template parts/blocks/commendation/commendation.php',“类别”=>“格式”,“supports”=>数组(“全高”=>true,),));}}

当设置为true时,编辑块时,全高按钮将显示在块工具栏上。

块编辑器全高按钮

如果在编辑器中的块上启用了全高设置,则$块传递给模板或函数回调的变量将包括全高(_H)键,并将设置为true。

但是,您需要在编辑器中和前端处理启用全高的块的所有相关样式。

//检查$block['full_height']是否可用并设置为trueif(isset($block['full_height'])&&true===$block['full.height']){$className.='全高';}//在块包装器中使用更新的$className<div id=“<?php echo esc_attr($id);?>”class=“>php echos esc_attr($className);?”>//块内容</div>

更多善良

虽然这些是本次发布的亮点,但我们还包括了以下更新和改进。

颜色选择器字段类型现在支持启用不透明度。启用时,它将默认值设置为不透明度1,并为您提供将颜色值返回为RGBA字符串或RGBA数组的选项。

启用不透明度的颜色选择器

编辑使用颜色选取器字段类型的自定义字段时,它包含一个用于不透明度的附加滑块。

具有颜色选择器不透明度的自定义字段

我们修复了启用ACF字段组的Widgets的一个错误,其中自定义字段值没有保存。这是由新基于块的小部件编辑器在WordPress 5.8中。

感谢瑞典ACF贡献者埃里克瑞典语翻译已经更新和改进!🎉

我们还修复了一个错误,该错误与使用块编辑器时无法正确验证计划发布的自定义字段有关。

开发人员备注

与所有ACF版本一样,我们包含了一些以开发人员为中心的更新。让我们看看这些更新的详细信息:

  • 我们更新了选择2ACF中使用的jQuery库,版本4。这还修复了另外两个错误。第一个是WordPress 5.8中引入的jQuery 3.6问题,其中Select2在被选中时不再关注选择框。第二个与另一个流行的WordPress插件有关,该插件使用Select2的更新版本,该版本覆盖了ACF中Select2的捆绑版本。
  • 感谢来自的公关亚瑟·施莱恩,如果您有多个规则,现在可以删除第一个字段组规则,这在以前是不可能的。
  • 我们更新了整个代码库,以遵循WordPress编码标准,使用了最流行的PHP代码美化和修复程序

与团队会面

随着所有这些工作的进行,现在是向您介绍美味的大脑ACF和ACF专业.

马特·肖,如果您为登录了支持票,您可能已经见过面WP迁移DB ProMatt是一位经验丰富的WordPress插件开发人员,他加入我们的时候,他的热门Better Search Replace插件由美味大脑获得早在2016年。在转到ACF之前,Matt是WP Migrate DB Pro团队的首席开发人员。

利亚姆·格拉迪是该团队的最新成员,在收购ACF后加入我们。幸运的是,Liam为我们带来了丰富的插件经验,特别是在ACF上。他已经开始在ACF上与马特一起做了很多事情。

更广泛的Delicious Brains团队现在也更多地参与ACF发布,包括产品规划、设计、营销和文档。我们期待着改进已经非常棒的插件及其资源。

下一步是什么

我们路线图上的下一个大目标是向ACF字段组添加WordPress REST API支持。随着API支持的JavaScript前端引擎在WordPress领域越来越流行,很明显,我们的许多客户都希望将此功能包含在ACF核心中。

我们还计划改进插件的性能,并开发其他生活质量功能。现在,我们的开发团队已经掌握了代码库和发布过程,我们可以开始处理这些更复杂但要求很长的功能。

🙌 感谢ACF社区中帮助实现此发布的每个人。

你对这个新版本感到兴奋吗?您最期待测试的功能是什么?让我们知道推特.

更新:我们还推出了5.10.1版本,其中包括一个与WooCommerce的SelectWoo库冲突的修复程序。

有关此版本的问题和帮助,请联系我们的支持团队.

关于作者