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

WordPress后台用户列表添加ACF字段与用户ID列报错求助

问题分析与解决思路

嘿,我一眼就发现你遇到的问题根源了——你重复定义了同名的PHP函数!在PHP里,同一个作用域下不能存在两个同名函数,当你同时添加Col1和Col2的代码时,第二个column_register_wpse_101322和column_display_wpse_101322函数会试图覆盖第一个,直接触发「Cannot redeclare function」的致命错误,导致页面无法正常加载。

另外,你第一个列的显示函数参数顺序也写错了:manage_users_custom_column钩子的参数顺序是$empty, $column_name, $user_id,但你写成了$post_id, $column_name, $opiekunklienta,这也会导致字段值无法正确获取。

修正后的完整代码

把两个列的函数分别重命名,并且修正参数顺序,就能同时正常显示两个自定义列了:

// --- Col 1: Opiekun (ACF字段列) ---
add_filter( 'manage_users_columns', 'column_register_account_manager' );
add_filter( 'manage_users_custom_column', 'column_display_account_manager', 10, 3 );

function column_register_account_manager( $columns ) {
    $columns['accountmanager_col'] = 'Opiekun';
    return $columns;
}

function column_display_account_manager( $empty, $column_name, $user_id ) {
    if ( 'accountmanager_col' !== $column_name ) {
        return $empty;
    }
    // 获取ACF自定义字段值
    $opiekunklienta_code = get_user_meta( $user_id, 'opiekun_klienta', true );
    return "<strong>{$opiekunklienta_code}</strong>";
}

// ---- Col 2: 用户ID列 ----
add_filter( 'manage_users_columns', 'column_register_user_id' );
add_filter( 'manage_users_custom_column', 'column_display_user_id', 10, 3 );

function column_register_user_id( $columns ) {
    $columns['uid'] = 'ID';
    return $columns;
}

function column_display_user_id( $empty, $column_name, $user_id ) {
    if ( 'uid' !== $column_name ) {
        return $empty;
    }
    return "<strong>{$user_id}</strong>";
}

关键修正点说明

  • 给每个列的注册/显示函数赋予唯一的名称(比如column_register_account_manager和column_register_user_id),彻底避免函数名冲突
  • 修正了第一个显示函数的参数顺序,确保$user_id能正确传递给get_user_meta获取字段值
  • 用严格不等号!==替代!=,提升代码逻辑的严谨性
  • 改用PHP字符串插值{$opiekunklienta_code}替代字符串拼接,让代码更易读维护

这样修改后,两个自定义列就能同时在用户列表页面正常显示啦!

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:21