如何在WordPress的Custom Field Suite(CFS)中获取指定字段组的名称及字段
实现方案
核心逻辑
Custom Field Suite(CFS)内置了未在公开API文档中标注的底层方法,可直接读取字段组及对应字段的配置信息,无需逐个查询单个字段。
完整实现代码
- 筛选获取目标字段组ID
// 获取站点内所有已创建的字段组 $all_field_groups = CFS()->get_field_groups(); $target_group_id = 0; $target_group_name = 'Hello'; // 替换为你需要查询的字段组名称 foreach ($all_field_groups as $group) { if ($group->post_title === $target_group_name) { $target_group_id = $group->ID; break; } }
- 批量获取该字段组下的所有字段(含配置和对应文章的取值)
if ($target_group_id > 0) { // 1. 获取该字段组下所有字段的配置信息(包含字段名、字段类型、备注等全量配置) $target_group_fields = CFS()->get_fields(['group_id' => $target_group_id]); // 2. 如需批量获取指定文章下该组所有字段的存储值,追加以下逻辑 $post_id = get_the_ID(); // 可替换为指定的文章ID $group_field_values = []; foreach ($target_group_fields as $field) { $group_field_values[$field['name']] = CFS()->get($field['name'], $post_id); } // 输出结果测试 print_r($group_field_values); }
原问题原因说明
CFS()->get() 方法默认返回当前文章所有已赋值的自定义字段的键值对,本身设计上就不会返回字段所属的字段组关联信息,所以之前打印结果看不到字段组「Hello」的名称属于正常情况。
补充说明
- 上述代码兼容CFS 2.6及以上所有稳定版本,无需修改插件核心代码
- 如需筛选指定文章类型绑定的所有字段组,可对
$all_field_groups中每个字段组的post_content字段进行反序列化读取,即可获取该字段组绑定的文章类型、显示规则等配置
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

