Buddypress\'bp_has_members()
函数接受多个参数以更改输出。看看Accepted Parameters codex页面上有关成员循环的部分。两个参数meta_key
和meta_value
可能正是你想要的。这个Code Examples 第节应为您提供有关如何进行更正的更多见解。
<小时>
Update:
首先,不能使用»不相等|!=
«运算符,就像您在评论中所做的那样。其次,@MarutiMohanty关于参数正确值的使用可能是正确的。您可能想要调试您的usermeta,您可以使用下面的代码在您的成员循环页面上输出此信息-它进入您的functions.php
.
Code:
add_action( \'bp_before_members_loop\', \'wpse129106_usermeta_debug\' );
function wpse129106_usermeta_debug() {
$user_id = get_current_user_id();
$all_meta_for_user = get_user_meta( $user_id );
echo \'<pre>\';
print_r( $all_meta_for_user );
echo \'</pre>\';
}
第三,在对这种情况进行了快速测试之后,我可以说,下面显示的所有方法对我来说都很好。Code:
// query string, only key - works
$qs_args_key = \'per_page=0&meta_key=uniquekey\';
// query string, key and value - works
$qs_args_key_and_value = \'per_page=0&meta_key=uniquekey&meta_value=uniquevalue\';
// arguments array, key and value - works
$args_array = array(
\'per_page\' => 0,
\'meta_key\' => \'uniquekey\',
\'meta_value\' => \'uniquevalue\'
);
// replace the variable to test the options
if ( bp_has_members( $args_array ) ) :
<小时>2nd Update:
由于您希望能够比较元值,因此需要做一些额外的工作。这几乎遵循了buddypress codex example 我向你推荐了上述建议<简而言之,请阅读codex页面上的解释以了解详细信息,我们创建了一个函数,用于比较和过滤相应的ID,并利用include
参数bp_has_members()
有我稍微修改了建议的示例,首先,我提出了第三个参数-$compare
- 其次,通过更改负责处理比较选项的SQL语句的条件。代码进入您的functions.php
或bp-custom.php
.Code:
function wpse129106_bp_member_ids_by_field( $field_name, $field_value = \'\', $compare = \'=\' ) {
if ( empty( $field_name ) )
return \'\';
global $wpdb;
$field_id = xprofile_get_field_id_from_name( $field_name );
if ( !empty( $field_id ) )
$query = "SELECT user_id FROM " . $wpdb->prefix . "bp_xprofile_data WHERE field_id = " . $field_id;
else
return \'\';
if ( !empty( $query ) ) {
if ( $compare == \'LIKE\' || $compare == \'NOT LIKE\' ) {
$query .= " AND value " . $compare . " \'%" . $field_value . "%\'";
} else if ( $compare == \'=\' && $field_value == \'\' ) {
$query = "SELECT DISTINCT user_id FROM " . $wpdb->prefix . "bp_xprofile_data";
$query .= " WHERE user_id NOT IN";
$query .= " (SELECT user_id FROM " . $wpdb->prefix . "bp_xprofile_data WHERE field_id = " . $field_id . " AND value != \'\')";
} else {
$query .= " AND value " . $compare . " \'" . $field_value . "\'";
}
} else {
return \'\';
}
$custom_ids = $wpdb->get_col( $query );
if ( !empty( $custom_ids ) ) {
$custom_ids_str = \'include=\' . implode(",", $custom_ids);
return $custom_ids_str;
} else {
return \'\';
}
}
您可以像在本例中一样使用它来更改成员循环:if ( bp_has_members(
\'per_page=0&\' .
wpse129106_bp_member_ids_by_field(
\'First Name\',
\'yourvalue\',
\'!=\'
)
)
) :