如何修改GravityEdit代码支持多表单记录编辑用户信息?
修改GravityEdit代码支持多表单更新用户名称
你遇到的「cannot redeclare」错误是因为重复定义了同一个PHP函数,PHP不允许同一个函数被声明多次。解决方法是把多表单的逻辑整合到同一个函数里,用配置数组来管理不同表单ID和对应字段ID的映射。
修改后的完整代码
add_action( 'gravityedit_after_update_entry', 'gravityedit_update_user_name', 10, 2 ); function gravityedit_update_user_name( $entry, $form ) { // 配置需要支持的表单ID和对应的用户名字段ID $form_field_mappings = array( 124 => 3, // 表单ID124,用户名字段ID3 25 => 3 // 表单ID25,用户名字段ID3 ); // 检查当前表单是否在配置列表中 if ( isset( $form_field_mappings[ $form['id'] ] ) ) { $user_name_field_id = $form_field_mappings[ $form['id'] ]; $user_name = rgar( $entry, $user_name_field_id ); // 确保用户名字段有值,且当前条目关联了用户 if ( ! empty( $user_name ) && ! empty( $entry['created_by'] ) ) { $user_id = $entry['created_by']; wp_update_user( array( 'ID' => $user_id, 'display_name' => $user_name, 'user_nicename' => sanitize_title( $user_name ) ) ); } } }
关键说明
- 配置数组:
$form_field_mappings里的键是表单ID,值是对应用户名字段的ID,以后要加新表单,直接在数组里加一行类似XXX => YYY的键值对就行,不用重复写函数。 - 表单过滤:通过
isset( $form_field_mappings[ $form['id'] ] )判断当前编辑的表单是否是我们需要处理的,避免无效执行。 - 避免重复声明:整个逻辑只放在一个
gravityedit_update_user_name函数里,替换掉你原来的单表单代码,就不会再出现重复声明的错误。
使用方法
把你原来functions.php里的旧代码删掉,把上面的代码粘贴进去即可,有需要新增表单时直接修改$form_field_mappings数组就行。
内容的提问来源于stack exchange,提问作者Kevin K.
相关产品推荐
相关产品推荐

