查看GitHub repo中的Gutenberg代码,我们可以了解内联图像格式是如何实现的:
https://github.com/WordPress/gutenberg/blob/99f31cdb4ed035264e0332b72dd3a2287d93ff50/packages/format-library/src/image/index.js#L17-L30
export const image = {
name,
title: __( \'Image\' ),
keywords: [ __( \'photo\' ), __( \'media\' ) ],
object: true,
tagName: \'img\',
className: null,
attributes: {
className: \'class\',
style: \'style\',
url: \'src\',
alt: \'alt\',
},
注意属性列表,编辑组件会进行必要的修改。当代码处理更改时,可以通过再次应用格式进行更新,格式应如下所示:
applyFormat( props.value, { type: \'core/image\', attributes: { "data-name": new_value, ...etc } } )
还有其他事情要做,但对于这个问题来说,这些是重要的部分
我还有一些旁注
Accessibility, Disability Laws, and Click Handlers
作为旁注,您的原始代码只处理点击,因此无法使用键盘或辅助技术进行修改。因此,根据各种无障碍、残疾、就业和机会平等法律,您的实施可能在许多国家和州是非法的。可能会有法律后果
Making Sure Your data attribute doesn\'t get stripped out by WP Security
我还要注意,默认的WP白名单可能会删除您的数据标签。这不是古腾堡的一部分,而是PHP,特别是
wp_kses_post
. 您需要筛选此白名单以说明您的数据属性。
HTML5 Semantic tags
此外,根据这些
data-name="..."
属性,您最好使用标准规范中更具语义的属性,例如Aria属性或HTML5标记。如果不知道数据属性的用途,我无法给出任何建议,但如果您可以使用更多的语义标记,它可能会在可访问性、SEO和其他意外领域带来好处。