You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在搭配经典编辑器的ACF中如何正确使用show_in_rest = true?

搭配经典编辑器的ACF中如何正确使用show_in_rest = true?

嘿,我完全懂你的困扰——你想要自定义文章类型article既能保留show_in_rest=true来支持REST API,又能继续用经典编辑器(而不是被强制切换到古腾堡),同时还要让ACF字段能在REST接口里正常访问,对吧?而且你还希望默认的post用古腾堡、页面用经典编辑器,这个需求其实很好实现,不用折腾自定义块,给你一步步说:

第一步:保留REST API支持,同时强制启用经典编辑器

你之前写的自定义文章类型注册代码里,show_in_rest=true是必须保留的——这是让article类型能被REST API访问的基础。但这个参数会让WordPress默认给该类型启用古腾堡,所以我们要加一段代码强制关闭它:

把下面的代码放到你的主题functions.php文件或者自定义插件里:

add_filter('use_block_editor_for_post_type', 'force_classic_editor_for_article', 10, 2);
function force_classic_editor_for_article($use_block_editor, $post_type) {
    // 只针对article这个自定义文章类型生效
    if ($post_type === 'article') {
        return false; // 关闭古腾堡,切换回经典编辑器
    }
    // 其他内容类型保持原有设置(比如post用古腾堡、页面用经典)
    return $use_block_editor;
}

这样设置后,article类型就会乖乖用经典编辑器,而post和页面的编辑器状态完全符合你的预期。

第二步:让ACF字段在REST API中可见

你之前尝试register_rest_field没成功,其实ACF本身就自带了REST集成的功能,不用自己手动写复杂的注册逻辑:

方式一:手动开启单个字段组的REST权限

打开ACF的字段组编辑页面,先点击右上角的「屏幕选项」,勾选「显示选项」,然后就能看到「在REST API中显示」的勾选框,勾选它之后保存字段组——这个组里的所有字段就会自动出现在对应文章的REST响应里了。

方式二:批量开启所有ACF字段的REST权限

如果你有很多字段组,不想一个个手动设置,可以用这段代码批量开启:

add_filter('acf/rest_api/field_settings', 'enable_all_acf_fields_in_rest', 10, 1);
function enable_all_acf_fields_in_rest($settings) {
    $settings['show_in_rest'] = true;
    return $settings;
}

最后回答你的疑问:需要创建自定义块吗?

完全不需要!自定义块是古腾堡编辑器的功能,而你的需求是用经典编辑器,上面的方案已经完美覆盖了你的所有要求:REST API正常工作、article用经典编辑器、post用古腾堡、页面保持经典。

备注:内容来源于stack exchange,提问作者Bonnacon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:04:37