我们阅读了每一条反馈,并非常认真地对待您的意见。
要查看所有可用的限定符,请参阅我们的文档.
对这个项目有疑问吗?注册一个免费的GitHub帐户以打开一个问题,并联系其维护者和社区。
单击“注册GitHub”,表示您同意我们的服务条款和隐私声明。我们偶尔会向您发送与帐户相关的电子邮件。
已经在GitHub上了?登录到您的帐户
注意:以前称为部分同步模式。
目前,当添加同步模式时,该模式的所有部分都会在每个实例中同步,因此模式任何部分中的更改都会作为模式的实例反映出来。
已经在许多地方讨论过(#48458,#50456)如果模式的一部分,特别是布局和样式组件,可以跨实例锁定和同步,同时允许独立更新部分内容,那么模式将更加有用/灵活。
用户的工作流示例可以是部分同步的“配方”模式。用户可以将此模式插入多个帖子,任何内容(成分、步骤)都将是帖子的本地内容,而不是在模式中同步。用户还可以返回并修改配方模式的设计,这应该不会影响他们的内容。
许多潜在的解决方案是此处讨论有一些概念证明。当前的想法是使用提议的块绑定api实现部分同步,因为需求中有一些重叠。块绑定API主要描述了将外部数据用于块属性值的方法(例如,将自定义字段用于段落内容)。对于模式,模式块的子块可以获取并将其属性值设置为模式块实例本身。这样,不同的模式实例可以将不同的数据注入到同一模式中。
请参阅中的当前原型#56235.
仅内容
wp/块
链接目标
核心/按钮
重置
模板锁定:全部
仅使用模板
内容
支持的属性:网址,身份证件,标题,中高音
网址
身份证件
标题
中高音
支持的属性:文本,网址
文本
相对
支持的属性:内容
支持的属性:内容无已知问题
块编辑模式
仅限内容
文本已成功更新,但遇到以下错误:
感谢您的探索!到目前为止看起来很棒👏
有一件事可能与此相关:在自定义字段实验中,我们将块属性连接到自定义字段,但它被设计为可以连接到任何其他源。这意味着,无论何时需要,都可以添加对其他源的支持。
我这样说是因为我们可能希望将“partial_synced_pattern”视为一个新的源,并且这些值不需要存储在自定义字段中。请记住,我对模式不太熟悉,所以这可能没有意义,但这是关于它如何工作的一个想法:
假设我们有一个带有图像和段落的模式块。我们可以将值存储在模式块属性中,并将内部块“连接”到该属性。大致如下:
<! wp:pattern{“dynamic_content”:{…}}--><!-- wp:image{“uniqueID”:“1234”,“connections”:{}}--><!-- wp:段落{“uniqueID”:“ABCD”,“连接”:{}}--><!-- wp:模式-->
成为动态_内容这样地:
动态_内容
“dynamic_content:{ "1234"以下为:{“url”: {“价值”:"<https://test.local/image.png>"},“样式”: {“颜色”: {“价值”:"#飞行频率"}}}}
以及连接内部块的:
连接
“连接:{ “url”: {“源”:"图案",“回退”:"https://mysite.com/image.png"},“样式”: {“颜色”: {“来源”:"图案"}}}
请记住,我只是制作API来展示一个示例,它们并不存在,如果我们采用这种方法,它们可能看起来会有所不同。
这样,每次用户修改部分同步模式的内容时,他们都会修改wp:图案块属性。在使用此模式的所有实例中,内部块都将保持不变。
wp:图案
此外,“连接”中包含的属性可用于定义模式的可编辑部分。
添加对后备属性的支持,以防自定义字段不存在。
我相信通过添加退路属性设置为当前API。类似于:
退路
“内容”: {“源”:"元",“价值”:"我的自定义字段",“回退”:"占位符文本"}
添加在模式实例基础上自动动态生成自定义字段键的功能,以允许在同一帖子中多次独立编辑同一模式。
为此,探索使用块的自定义命名来使用唯一ID的可能性:链接建议。如果我是正确的,有一个建议。也许部分同步可以生成一个唯一的散列,直到它准备好为止。
复写的副本:@米歇尔扎普林斯基
对不起,出了点问题。
离6.4还有四周的时间,让我们把它放到未来的版本中,因为没有足够的时间来合理地实现它😄 如此伟大的工作,继续探索,并试图使一些事情发生。
谢谢你把这些放在一起,@格伦达维森茨虽然我很遗憾这没有进入6.4,但我很高兴看到它在6.5的名单上。
我们的团队刚刚将一个400多个帖子/页面的网站迁移到了一个区块主题,我们的头号难点是在设计更改时必须手动更新所有帖子的模式样式。我们将为100多个post站点进行几次站点迁移,由于缺少部分同步模式,我们正在探索将大型站点转换为FSE的其他选项。
我和我的团队正在密切关注此事,并期待着做出贡献。
谢谢@无剧本的,您是否能够更详细地描述您将如何看到部分同步模式在您的完美世界中工作?显然,这个世界并不完美,因此我们无法保证能够满足您的所有需求,但如果我们对潜在的现实世界用例有尽可能多的了解,这将有助于我们具体地实现这一点。
我们的用例是相似的,缺少这个特性让我们望而却步。
谢谢@无剧本的,您是否能够更详细地描述您将如何看到部分同步模式在您的完美世界中工作?
我们需要一组版面的某些部分被锁定,但实际内容可编辑的部分模板部件。这将允许我们快速创建页面,并随着时间的推移更新和调试设计,因为模板与其内容是分开的。
这在ACF块中已经非常有效,但这些块有局限性。当试图用古腾堡做同样的事情时,最接近的是全球模式。
这方面的一个具体示例是一个大型英雄模板,其中可以更改背景图像、表单、标题等。我们希望锁定模板及其内部块的布局,同时保持这些块的内容可编辑。这样,整个站点中的所有英雄标题都将使用一个模板,我们可以在将来更新它,例如在标题下方添加按钮,并将其设置为默认情况下在所有英雄上可见。这个小改动需要几个小时才能单独更新100多位英雄。
我们还将使用动态块,以便在没有编辑器错误的情况下更新模板。这个概念在ACF中非常有效,但ACF缺乏我们所需要的粒度可组合性和块编辑经验。
@ridinghoodmedia公司-听起来我们遇到了一些相同的ACF限制。
您是否能够更详细地描述您将如何看到部分同步模式在您的完美世界中工作。
TBH,我认为可能需要几次迭代才能确定我的完美世界解决方案,但我的MVP目标如下。我应该说,这些来自于开发商/机构为客户(最终用户)构建网站的心态。
用户必须手动编辑和更新每个帖子,以便将设计或设置更改应用于站点内标准模式的每个实例。虽然这对小型网站来说是一个小小的不便,但这导致了100多个页面网站的大量工作。
通过引入“部分同步模式”的概念来增强块编辑器,通过从集中的模式库控制块设置和样式,在不同的页面和帖子中保持一致的设计。
新图案类型:开发块编辑器中可用于模式的新型同步,允许与模式库进行部分同步。这意味着,虽然模式的某些风格和结构元素是通过模式库进行控制和更新的,但模式中的内容可以由最终用户在帖子级别进行编辑。此模式类型可以是新的顶级类型,也可以是Synced类型的子组。应该同步锁定,以便开发人员或设计器可以防止h1等项目从块中删除。
模式库集成:模式库将容纳这些部分同步的模式并管理样式更新。当一个模式的样式在库中更新时,它会自动跨文章传播到该模式的所有实例,而不会更改文章作者添加的唯一内容。
块编辑器:最终用户可以将这些模式应用于他们的页面,并可以自由编辑块中的内容,同时从模式库中维护块的整体样式和结构。我看到块编辑器的输出类似于“templateLock”:“contentOnly”属性仍然允许最终用户编辑内容,但在这种情况下,用户不能使用“修改”操作更改帖子级别的块设置或样式。
“templateLock”:“contentOnly”
用户应该能够从图案中删除非锁定块,但不能添加新块。例如,页眉模式可以使用带有标题、段落、默认图像和按钮的封面块。当在模式库中创建默认模式时,最终用户可以删除标题、段落、默认图像或按钮(如果该页面不需要它们)。
设计一致性:通过控制集中模式库中的块设置和样式,在不同页面和帖子之间保持一致的设计。
内容的灵活性:允许最终用户专注于他们独特的内容,而不是关注每个帖子的风格调整。
效率:允许管理员、开发人员或设计人员在一个地方(模式库)进行块式更新,从而自动反映模式的使用情况,从而简化内容管理和设计更新过程。
@无剧本的很好的描述,这听起来很像我们的用例。导入/导出模式也很重要。
我认为,由于人们甚至不知道如何描述这个特性,因此对这个用例的需求比看起来要大得多。在找到这个线程之前,我让一个开发人员进行了内部解决方案的工作,我们决定等待,因为核心中的解决方案会更好。
导入/导出模式也很重要。
在这方面,WordPress 6.4:#53288
谢谢@无剧本的,@ridinghoodmedia公司,您概述的内容与我们希望实现的目标完全相符🤞 部分同步模式可以工作,这一点很好知道。感谢您抽出时间充实您的需求。
@塔尔丹根据过去几周(已经几个月了?😄)。最新的原型可以在中找到#55807。下一步是评估链接的解决方案是否足够好,以将其作为功能标志后面的现有实验放在古腾堡。
我想@ridinghoodmedia公司和@无剧本的已经为这应该如何工作创建了一个很棒的大纲。我只为我们的用例提供了几个其他细节。
@塔尔丹的原型位于#55807真的令人印象深刻。现在,它显示了段落和标题等基本块的文本值被设置为元字段,这将是一个关键功能。但对我们来说,任何内容类型都能使用这个系统是非常重要的。
例如,假设我有一系列大学教授的个人资料页面。我希望能够创建一个部分同步的模式,该模式具有:
邮寄地址:
理想情况下,我可以从媒体库中分配图像块的源、组块的InnerBlocks、列表块的列表项以及href公司按钮字段作为要逐个实例自定义的元字段。
href公司
这将允许用户为教授的个人简历创建重要的自由格式内容,但只需为凭证添加列表项或修改href公司按钮的字段。
最后,如果这些元字段值也可以分配给查询块中的块,那就太棒了。再次使用上面的教授简介页面示例,我可以创建一个相当于所有教授的存档页面,其中包含一个查询块,每个教授都会显示一个图像块,其中包含他们的照片(从相关元字段检索)、页面标题(这已经是可能的)、,以及指向其电子邮件地址的链接(再次从相关元字段中检索)。
我不确定所有这些是否都超出了正在开发的范围,但这将是我们的“MVP”解决方案,因为它将根据我们为用户创建的内容类型提供广泛的灵活性或刚性。
作为一个疯狂的长期请求,最终有能力分配任何在部分同步模式中,将块的值或设置为一个元字段,以便在逐实例的基础上进行自定义,就像按钮的颜色一样,这将是绝对令人惊讶的。但我不得不想象这将是一项繁重的工作。
最后,如果这些元字段值也可以分配给查询块中的块,那就太棒了。
@埃里克·米切尔将块属性与自定义字段连接起来的工作有点交叉。它可能值得一读此更新如果你还没有完成这项工作。
我已经做了一些初步探索,看看将模式实例内容存储在父模式属性中的概念缩放到还存储编辑过的innerBlocks内容,以便允许列表块和库等在模式实例之间发生变化。
有一个非常基本的硬编码PoC公司这表明我们至少可以从父模式属性中提取内部块,并用它们更新子列表块。在编辑子innerBlock时,还需要做更多的工作来确定如何更新父模式属性。在PoC PR中,最初硬编码列表块编辑方法中的功能是为了帮助准确识别我们需要抽象出的内容内部块属性为了使这在选择加入属性连接的块之间自动工作。
内部块属性
在最初的探索之后,我担心的一个问题是,这可能会将大量数据添加到父模式块属性中,尤其是对于大型库等-不知道这意味着什么🤔
在测试此更新(块名更新)时,我通过编辑旧的nano id模式创建了此类内容(仅使用UI):
<!-- wp:block{“ref”:5746,“content”:{“mFd_dw”:}“content(内容)”:[“蓝海之岸”]},“doUhL-”:{“url”:[1,”https://example.com网站“],”linkTarget“:[1,”_blank“]}}/-->
注意第一个内容中的数组。这将触发详细的致命错误。
埃莉诺·哈里斯(美国,1901-1942)
一些新文本
即使我删除了错误的数组,在PHP中设置了:
//启用显示所有错误错误报告(E_ALL);ini_set('显示错误',1);
我会得到编辑的
警告:第1108行gutenberg/wp-includes/formatting.php中的数组到字符串转换
模式中的每个块对应一个。
@德拉加内斯库您的测试数据似乎正在使用绑定的“遗留”唯一键格式。“新”格式基于使用元数据名称作为关键。可能错误是因为您之前创建的时候系统使用了唯一的密钥格式,并且没有“迁移”到位。如果是这样的话,我认为我们不需要考虑这种情况,但我希望您确认这不是一个更广泛的问题。
元数据名称
@格特戴夫我相信实现中有一个迁移。事实上,使用新系统和新创建的模式并没有导致错误。然而,即使旧的遗留id没有使用,我相信错误也指向了一些缺少的保护:(a)该数组是如何保存在标记中的,以及(b)如果类型错误,我们不应该允许该类型传递给抛出致命错误的函数。
@德拉加内斯库这种特殊的“补丁”格式从未在gutenberg插件中发布过。它被短暂地发送到主干,但被还原了,您必须在这段短暂的时间内创建了该模式。
该格式没有背面兼容。
是的,我认为没有理由为从未在发行版中提供的实现包含任何迁移。
事实上,使用新系统和新创建的模式并没有导致错误。
因此,我的理解是,我们可以假设这个问题@德拉加内斯库报告不再是问题。
我认为这是不对的。作为用户,我可以通过块上下文菜单(创建模式)在post编辑器/站点编辑器中的任何位置创建新的同步模式。从那里显示的模式允许我创建同步模式。在编辑syced模式时,我之前重命名/从此重命名的所有内容都是这样的。所以我不认为这是一个隐藏的超级用户专用功能。(创建和编辑同步模式)
这是一个有趣的观察结果。如果使用此工作流创建模式,也许我们可以考虑避免创建绑定。
我认为这是不对的。作为用户,我可以通过块上下文菜单(创建模式)在post编辑器/站点编辑器中的任何位置创建新的同步模式。从那里显示的模态允许我创建一个同步模式。在编辑syced模式时,我之前重命名/从此重命名的所有内容都是这样的。所以我不认为这是一个隐藏的超级用户专用功能。(创建和编辑同步模式) 这是一个有趣的观察结果。如果使用此工作流创建模式,也许我们可以考虑避免创建绑定。
我认为这是不对的。作为用户,我可以通过块上下文菜单(创建模式)在post编辑器/站点编辑器中的任何位置创建新的同步模式。从那里显示的模态允许我创建一个同步模式。在编辑syced模式时,我之前重命名/从此重命名的所有内容都是这样的。所以我不认为这是一个隐藏的超级用户专用功能。(创建和编辑同步模式)
坦白地说,我不认为这会让我的经历变得更加清楚。我真正地认为我们应该遵循#59583。有一个清晰的切换是体验不会如此混乱的关键。
如果使用此工作流创建模式,也许我们可以考虑避免创建绑定。
我确信它已经这样工作了,因为在块处于启动绑定的模式的范围内之前就已经设置了名称。无论如何,我同意@法比安凯从用户的角度来看,这将是令人困惑的。
这是一个有趣的观察结果。
为了避免混淆,我承认这一观察结果,而不是建议将其作为解决当前问题的总体解决方案。
我确信它已经这样工作了,因为在块处于启动绑定的模式的范围内之前就已经设置了名称。
这是当前的行为。如果创建的图案包含已重命名的块,则它会自动创建绑定。这是因为在模式编辑器中有一个效果。期间似乎没有添加绑定创造的堆芯/块而是当模式是已编辑.
堆芯/块
值得一提的是,今天在创建同步模式时,当启用实例覆盖的复选框丢失时,我感到非常困惑。然后,当我意识到需要为块指定一个显式名称以便对其启用覆盖时,我感到很沮丧,然后当我认识到需要为每个区块在模式中。
需要在我刚刚尝试的模式中为块设计名称,但我还没有好的名称,这真的打破了我的思维流。
诚然,这里的上下文是在进行一些测试,但在测试说明中解释“要在模式中启用覆盖,您需要给这些块一个名称”也让人觉得很尴尬,这似乎违反了直觉。
总的来说,我认为这在用户和他们的内容之间增加了一个额外的不必要的障碍,我不同意这只会被高级用户使用。比方说,我只是一个技术水平一般的人,想用WordPress建立自己的网站——我在一个创造性的流程中构建它,进行实验,我想使用一些模式,但突然间,当我还没有准备好时,我需要给每个可重写块一个明确的名称。
复选框似乎是启用实例覆盖的合理开销;至少对我来说,需要命名每个块才能实现这一点是一种令人沮丧的经历。
在阅读了用户的测试体验后#59651,我相信它重申了启用覆盖的专用控件的重要性。
我已经回顾了这个线程,重新阅读了我们是如何做到这一点的,并试图理解控件绑定到块重命名API的影响,如中所述这个评论.
在后面的评论中,@凯文940726提到
FWIW还注意到,只支持这两者并使用唯一id作为备用可能更容易。
和@格伦达维森茨指出
问题在于元数据名称它是在接口的某些部分中公开和编辑的,这些部分与使洗牌等变得可靠的那种命名约定不兼容,例如。英雄/头衔用户可以在不了解更改影响的情况下进行更改,例如。
英雄/头衔
这种交流的一个关键点是“用户可以在不了解更改影响的情况下进行更改”。我觉得我们已经用一种方法换了另一种方法,这可能仍然会导致用户在不了解潜在影响的情况下进行更改。
考虑到不想为未来的混洗功能把自己描绘成一个角落,回退的想法让我想到了一个用于覆盖的专用键值对。下面概述的方法可行吗?
我的想法是,通过将覆盖与块id和块名称分开,这可能会减少对块重命名API所做更改的影响,并可以提供一个唯一的id,以便在未来实现洗牌功能时使用。
我确信,这种方法存在一些我不知道的技术挑战,而且这可能是不可能的。我们可能需要来自@richtabor公司也是如此。
我很喜欢你的反馈,希望我们可以后退一步,考虑一个对最终用户来说更直观的解决方案,并且不双重使用Block Name字段。
自动生成的密钥允许唯一性 我见过不需要独特性的用例。我见过这样的模式:图像在模式的不同位置显示多次,因此重复名称实际上只允许用户定义一次。我看到过徽标/公司名称位于多个位置的模式,使用相同的名称也可以解决这个问题。所以换句话说,这实际上是一个允许多次使用相同名称的功能。
自动生成的密钥允许唯一性
我见过不需要独特性的用例。我见过这样的模式:图像在模式的不同位置显示多次,因此重复名称实际上只允许用户定义一次。我看到过徽标/公司名称位于多个位置的模式,使用相同的名称也可以解决这个问题。所以换句话说,这实际上是一个允许多次使用相同名称的功能。
自动生成的密钥允许唯一性,但当用户决定“opt-in”时,我们也可以复制它们。使用块重命名API将命名的负担转移到开发人员/用户身上,这是人类最难做到的事情之一😅. 使用自动生成的ID作为“默认”可以减轻负担,但也可以使用户实现高级功能。
此外,在您描述的用例中,我认为“嵌套模式”可以实现类似的结果。我认为它从未得到过官方支持,但我认为值得单独研究。
和@格伦达维森茨指出 metadata.name的问题在于,它在界面的某些部分是公开的和可编辑的,这些部分与使洗牌等变得可靠的命名约定不兼容,例如英雄/标题,以及用户可以在不了解更改影响的情况下进行更改,例如。
metadata.name的问题在于,它在界面的某些部分是公开的和可编辑的,这些部分与使洗牌等变得可靠的命名约定不兼容,例如英雄/标题,以及用户可以在不了解更改影响的情况下进行更改,例如。
根据最近的变化和讨论,我支持上述观点。我能理解将此与名称联系起来的愿望背后的想法,但我相信,由于上述问题,弊大于利。在我看来,最好的方法是坚持使用原始的显式opt-In,默认情况下使用随机id生成,但高级用户可以在UX或模式序列化HTML中分配自己的id。这将很容易通过原始架构实现此处为原型.
我还想分享一下,由于最初的复选框UI一直存在到Beta 3的最后,这里已经有一些培训材料,比如Jamie Marsland的精彩概述,可以培训用户使用这种用户体验:https://youtu.be/tf8w0xMNToY?si=a6VdLrzKkXevCyse
嗨,各位,谢谢你们的关心。很明显,该功能似乎还没有完全准备好在WordPress中发布,所以我们决定将其转移到WordPress6.6,并暂时保留其插件。
你可以在上阅读更多信息品牌/核心
这里的第一个重要动作是保护“is_GUTENBERG_PLUGIN”标志背后的特性。复写的副本@凯文940726 @塔尔丹
—
对于稍后的内容,我想指出的是,该功能不仅是关于“使内容可被用户覆盖”,而且是直接使用,我们应该更全面地考虑这一点,它是关于分离内容和模式的表示。它是关于为模式提供模式。
所以我想我们需要澄清一些事情
使用来源
关于使用该名称作为来源,我认为目前我们应该继续使用它。
IS_GUTENBERG_PLUGIN公司
我做了一个公关,只做功能插件-IS_GUTENBERG_PLUGIN标志后面的实现模式覆盖
我在亚洲WC期间一直在做这方面的工作,所以希望能进行一些彻底的测试,因为我只是到处做一些测试!
wp:块
我已经开始研究一个新的史诗问题,重点是6.6需要什么-模式覆盖史诗(WordPress 6.6).
也许最好结束这个问题,并将所有未来的对话转移到那里?
我今天没有时间了,但我会确保明天能更广泛地传达这一点。
谢谢@塔尔丹那么让我们关闭这个。
没有分支或拉取请求