预填充重力表中的BuddyPress成员配置文件数据

时间:2013-07-08 作者:Daniel Foltynek

我成功地将登录用户wordpress用户元预填充到gravity表单中,但我找不到如何将buddypress配置文件数据预填充到gravity表单中的方法。

Goal

我希望能够从Buddypress中提取登录用户的配置文件数据,以重力形式填充字段,如电话、地址、国家/地区、省份等。

Conclusion

我希望buddypress成员概要文件字段的工作方式与wordpress user\\u meta非常相似,我尝试了许多组合,我在网上找到了这些组合,但没有任何效果(例如buddypress配置文件字段中的一个字段的名称是Phone-group\\u id=5&field\\u id=59-这是编辑配置文件页面中的slug,应该是Phone的字段编号是59和group 5(我不知道这是否重要):

这是应该提取Buddypress xprofile字段的代码,不幸的是,这些字段不起作用。

add_filter("form_field_value_phone", "populate_phone");
function populate_phone() {
    $current_user = wp_get_current_user();
    $current_user_id = $current_user->ID;
    $phone = bp_profile_field_data( array(\'user_id\'=>$current_user_id,\'field\'=>\'Phone\' ));
    return $phone;
}
这是在函数中使用“wordpress”用户元数据字段。php

// populate the field with "user_firstname" as the population parameter with the "first_name" of the current user
    add_filter(\'gform_field_value_user_firstname\', create_function("", \'$value = populate_usermeta(\\\'first_name\\\'); return $value;\' ));

// populate the field with "user_lastname" as the population parameter with the "last_name" of the current user
        add_filter(\'gform_field_value_user_lastname\', create_function("", \'$value = populate_usermeta(\\\'last_name\\\'); return $value;\' ));

// this function is called by both filters and returns the requested user meta of the current user
        function populate_usermeta($meta_key){
            global $current_user;
            return $current_user->__get($meta_key);
        }

2 个回复
最合适的回答,由SO网友:Daniel Foltynek 整理而成

对于那些也需要它的人,我可以使用这个代码段(它适用于文本字段,下拉列表应该不同):

    add_filter("gform_field_value_city", "populate_city");
function populate_city($value){
     global $current_user;
     get_currentuserinfo();
     return xprofile_get_field_data(\'city\', $current_user->ID);
}
和重力形式

Parameter Name = city

SO网友:Slava Abakumov

为什么不使用xprofile_get_field($field_id)xprofile_get_field_data($field, $user_id)? 它们位于BuddyPress代码中,为您提供字段数据。

结束