如何利用ACF自动合并FirstName与LastName生成FullName字段?
实现ACF自动合并FirstName和LastName生成FullName字段
当然可以实现,下面是两种实用方案,根据你的需求选择:
方案一:保存时自动写入数据库(适合后端需要存储FullName字段的场景)
利用ACF的acf/save_post钩子,在运动员档案(自定义文章类型/用户)保存时,自动拼接FirstName和LastName的值,写入FullName字段。
把以下代码添加到主题的functions.php文件或者自定义插件中:
add_action('acf/save_post', 'auto_generate_full_name', 20); function auto_generate_full_name($post_id) { // 避免在自动保存/修订版本时触发 if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) { return; } // 获取FirstName和LastName字段的值(替换成你实际的字段键) $first_name = get_field('first_name', $post_id); $last_name = get_field('last_name', $post_id); // 拼接全名,处理空值情况 if ($first_name || $last_name) { $full_name = trim($first_name . ' ' . $last_name); // 更新FullName字段(替换成你实际的字段键) update_field('full_name', $full_name, $post_id); } }
注意:代码中的first_name、last_name、full_name需要替换成你在ACF中创建字段时设置的字段键,不是字段标签。
方案二:动态生成(无需存储到数据库)
如果后端只是需要调用全名,不需要在数据库中存储FullName字段,可以用acf/format_value钩子动态返回拼接结果,这样可以省去数据库存储的步骤:
add_filter('acf/format_value/name=full_name', 'dynamic_full_name', 10, 3); function dynamic_full_name($value, $post_id, $field) { $first_name = get_field('first_name', $post_id); $last_name = get_field('last_name', $post_id); return trim($first_name . ' ' . $last_name); }
这种方式下,FullName字段可以设置为隐藏,或者前端不显示输入框,调用get_field('full_name')时会自动返回拼接后的结果。
额外提示
- 如果你的运动员档案是基于用户角色(而非自定义文章类型),上述代码同样适用,只需确保字段键正确即可。
- 测试时记得创建/编辑一条运动员档案,检查FullName字段是否自动填充成功。
内容的提问来源于stack exchange,提问作者user1074239
相关产品推荐
相关产品推荐

