Skip to content

Instantly share code, notes, and snippets.

@KaineLabs
Created June 15, 2019 01:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KaineLabs/6fd88dded7232969fa08b8fa412d3d1e to your computer and use it in GitHub Desktop.
Save KaineLabs/6fd88dded7232969fa08b8fa412d3d1e to your computer and use it in GitHub Desktop.
Filter Members Directory by Member Type.
<?php
/**
* Get Field Options
*/
function yzc_get_xprofile_field_options( $field_id ) {
// Get Field Data.
$field = new BP_XProfile_Field( $field_id );
// Get Select Box Options.
$children = $field->get_children();
//
$options = wp_list_pluck( $children, 'name' );
return $options;
}
/**
* Add New Xprofile Field As new Filter.
*/
function yzc_add_new_members_directory_filter() {
// Get Member Types
$member_types = yz_get_member_types();
if ( ! yz_is_member_types_active() || empty( $member_types ) ) {
return false;
}
?>
<li id="members-type" class="last filter">
<select id="members-type">
<option value=""><?php _e( 'Member Type', 'youzer' );?></option>
<?php foreach ( $member_types as $type ): ?>
<?php
if ( 'false' == $type['show_in_md'] ) {
continue;
}
// Make the id lowercase.
$type_id = isset( $type['id'] ) ? $type['id'] : yz_get_member_type_id( $type['singular'] );
// Get Type
$type_infos = bp_get_term_by( 'slug', $type_id, bp_get_member_type_tax_name() );
//$type_infos->count
if ( ! isset ( $type_infos->count ) || $type_infos->count < 1 ) {
continue;
}
?>
<option value="<?php echo $type_id; ?>"><?php echo $type['name']; ?></option>
<?php endforeach; ?>
</select>
</li>
<?php
}
add_action( 'bp_members_directory_member_sub_types', 'yzc_add_new_members_directory_filter' );
/**
* Members Directory - Set Field Filter.
*/
function yzc_set_filter_by_xprofile_field( $loop ) {
if ( bp_is_members_directory() && isset( $_POST['filter'] ) ) {
$loop['member_type'] = $_POST['filter'];
}
return $loop;
}
add_filter( 'bp_after_has_members_parse_args', 'yzc_set_filter_by_xprofile_field', 9999 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment