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

如何修改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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:35:07