从user_register钩子中的好友新闻中获取"名称"配置文件字段



我正在制作一个wordpress插件,当与BuddyPress集成时,需要在注册时获取用户名。 遗憾的是,Name字段从不返回任何内容。 以下代码在user_register挂钩中运行。

add_action( 'user_register', 'ts_api_registration_save', 9999999, 1 );
function ts_api_registration_save($user_id)
{
$info = get_userdata($user_id);
$name = bp_profile_field_data( array( 'field' => 'Name', 'user_id' => $info->ID));
}

不幸的是,$name总是空的。 我已经检查了数据库,名称字段是bp_xprofile_fields中唯一的字段,所以我知道它存在。
我还确认$info->ID不是空的,它正确地包含一个用户 ID。 知道为什么这不起作用吗?

与此同时,我已经能够做到这一点来得到我想要的东西:

$results = $GLOBALS['wpdb']->get_results( 'SELECT * FROM ' . $wpdb->prefix . "bp_xprofile_fields WHERE name = 'Name'" );
$fullName = $_POST["field_" . $nameFieldId];

但这不是最佳的。

此函数仅在用户配置文件页面的上下文中起作用:bp_profile_field_data

相反,请尝试使用xprofile_get_field_data

另外 - "user_register"钩子可能运行得太早了。 尝试使用以下钩子之一:

bp_core_signup_user
bp_signup_pre_validate
bp_signup_usermeta

尝试使用xprofile_get_field_data()而不是bp_profile_field_data()

例如:

$name = xprofile_get_field_data( 'Name', $user_id, $multi_format = 'comma' );
echo $name;

http://hookr.io/functions/xprofile_get_field_data/

另一种解决方案

尝试传递字段 ID 而不是字段名称。

$value = xprofile_get_field_data($field_id, $user_id);

您可以通过在编辑该字段时查看 wp-admin 中的 url 来获取字段 ID,或者只是滚动编辑按钮。

最新更新