但我的情况是这样的:我有一个自定义的帖子类型,我想设置一个模板,这样他们就不能在块之间移动,也不能添加其他块等等。在这篇文章中,大约70%是由代码创建的。因为它正在从API获取所有信息。
注册帖子类型时可以这样说。您可以列出允许的块、不允许的块、初始起始块、是否可以删除/添加/移动它们、是否可以添加新块等
测试1:我已经创建了一个包含所有所需字段的ACF块,当我从WP admin创建新帖子时,它正常工作。但当我运行update\\u field函数时,它会像以前一样将其保存到post\\u meta表中。所以,我这里的问题是如何更新字段,使其保存到post\\U内容,而不是post\\U元表。
答案是你没有。你在《经典编辑》中没有,为什么古腾堡会有任何不同
测试2:我为所有字段创建了自定义块(将每个ACF字段转换为and块),并将模板设置为仅使用这些块。但在这里,我不知道如何用PHP或Javascript更新post\\u内容。
ACF块不是帖子内容,它们是块,是的,但它们不在帖子内容中存储任何内容。我将它们称为“元块”,它在编辑器中纯粹用作UI。
所以,你要找的是古腾堡模板(阅读手册非常重要,这会节省你很多时间)
https://wordpress.org/gutenberg/handbook/templates/
块模板定义为块项目列表。此类块可以具有预定义的属性、占位符内容,并且可以是静态的或动态的。块模板允许指定编辑器会话的默认初始状态。
然后提供了注册自定义帖子类型的示例:
function myplugin_register_book_post_type() {
$args = array(
\'public\' => true,
\'label\' => \'Books\',
\'show_in_rest\' => true,
\'template\' => array(
array( \'core/image\', array(
\'align\' => \'left\',
) ),
array( \'core/heading\', array(
\'placeholder\' => \'Add Author...\',
) ),
array( \'core/paragraph\', array(
\'placeholder\' => \'Add Description...\',
) ),
),
);
register_post_type( \'book\', $args );
}
add_action( \'init\', \'myplugin_register_book_post_type\' );
以及模板锁定:
https://wordpress.org/gutenberg/handbook/templates/#locking
有时,目的可能是将模板锁定在UI上,以便无法操纵显示的块。这是通过template\\u lock属性实现的。
调用时提供新参数register_post_type
:
\'template_lock\' => \'all\', // or \'insert\' to allow moving
以及其他示例。要向这些模板添加ACF块,您需要咨询ACF支持部门,因为ACF是第三方插件,第三方插件与主题无关