您将要使用$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表中的名字和姓氏字段,因为我使用过的大多数电子邮件系统也需要这些字段)。
但是,这应该让你朝着正确的方向前进。