BuddyPress:如何通过一些x-Profile数据过滤用户信息?

时间:2013-04-29 作者:Debiprasad

我想要用户列表及其电子邮件ID,并通过一些x-profile数据进行过滤。

例如,我想向选中个人资料复选框的用户发送一封电子邮件。

如何获得x-profile数据过滤后的用户信息?

3 个回复
SO网友:Eric Allen

您将要使用$wpdb 类为具有特定x-profile字段值的用户执行查询。

我不是MySQL专家,所以其他人可能有更好的方法来编写这个查询(如果你有,请分享,我会更新我的代码),但这里有一种方法。

这种方法假设您知道要在其上运行报告的BuddyPress概要文件字段的ID,若不知道,可以更改查询以检查[prefix]_bp_xprofile_fields 表,并将其ID用于查询的其余部分。

这种方法还假设您正在查找与用户的WordPress帐户关联的电子邮件地址,而不是您在BuddyPress中定义的其他电子邮件字段,如果您在BuddyPress中查找一个,则需要执行更复杂的查询,因为[prefix]_bp_xprofile_data 表将包含要检查的值和要在下返回的值value 表中的字段。

//create a simple function that will retrieve your desired results
function wpse97684_get_desired_users($field_id, $field_val) {
    //$field_id: (int) this is the ID of the field you\'d like to check against
    //$field_val: (str) this is the value you want those users to have in the field

    global $wpdb;
    $bp_table = $wpdb->prefix . \'bp_xprofile_data\'; 

    $query = $wpdb->prepare(
        "SELECT U.user_email " .
        "FROM $bp_table B, $wpdb->users U " .
        "WHERE B.user_id = U.ID " .
        "AND B.field_id = %d " .
        "AND B.value = %s"
       , $field_id
       , $field_val
    );

    $get_desired = $wpdb->get_results($query);

    if(count($get_desired)) {
        return $get_desired;
    } else {
        return false;
    }
}

//to call this function, just pass the desired field ID and the desired value
wpse97684_get_desired_users(4, \'Yes\'); //example
现在,我不确定您将如何使用这些数据或在何处实现它,所以我将其保留为原始对象格式$wpdb 类返回。

如果计划将其输入电子邮件活动系统,您可能希望将其放入插件中,并将返回的值格式化为CSV或其他格式(您可能还希望检查usermeta表中的名字和姓氏字段,因为我使用过的大多数电子邮件系统也需要这些字段)。

但是,这应该让你朝着正确的方向前进。

SO网友:Magico

根据buddypress xprofile loop 您可以使用查询所有用户配置文件数据

<?php if ( bp_group_has_profile( \'user_id=10\' ) ) : ?>
然后在循环中,您可以搜索特定的配置文件数据并执行所需操作,例如:

         <?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?>

              <?php if ( bp_field_has_data() ) : ?>

                <?php if (bp_the_profile_field_name() == \'yourCheckboxFieldId\') && bp_the_profile_field_value() == \'checked\'){
//SEND EMAIL!
    }

     ?>


              <?php endif; ?>

            <?php endwhile; ?>
也许这会有帮助!

SO网友:user44067

在buddypress上创建组时,通过组名(kanpur)自动从xprofile数据中选择组名成员。ie it在创建组后自动从xprofile数据中选择kanpur成员。

结束

相关推荐

如何将现有的wp用户转移到新的BuddyPress安装

我用一个不同的插件创建了一个社区(我认为是mingle。我最近安装了buddypress,删除了mingle,并将网站改为suite。现在的问题是,现有用户在成员页面中没有被列为成员,只有我,管理员。我已经寻找了一个解决方案,但没有找到。我知道如何使用Wordpress,但这个问题让我很为难。对于所有有经验的buddypress用户来说,这可能是一个简单的问题,但是我才刚刚开始,所以在你说我有多笨之前,请记住这一点:)感谢您抽出时间阅读本文。