Skip to content

Instantly share code, notes, and snippets.

@codelion7
Last active February 3, 2020 12:45
Show Gist options
  • Select an option

  • Save codelion7/bcb68af1cb8b417b23b51161da67eb37 to your computer and use it in GitHub Desktop.

Select an option

Save codelion7/bcb68af1cb8b417b23b51161da67eb37 to your computer and use it in GitHub Desktop.
Enable Global Member Types in BuddyPress
<?php
/**
* Sets a user's buddypress member type(s) globally across all sites
*
* @since 1.0
*/
function bp_set_global_member_type( $user_id = 0, $member_type = '', $append = false ) {
// Append new member type to global member type array
if ( $append == true ) {
$global_type = get_user_meta( $user_id, '_bp_member_member_type' );
if ( is_array( $global_type[0] ) ) {
array_push( $global_type[0], $member_type );
// Make sure it's a valid member type
if ( ! empty( $global_type[0] ) ) {
foreach( $global_type as $gt_key ) {
foreach( $gt_key as $key => $type_name ) {
// Remove invalid types
if ( ! bp_get_member_type_object( $type_name ) ) unset( $global_type[0][$key] );
}
}
}
update_user_meta( $user_id, '_bp_member_member_type', $global_type[0] );
} else {
array_push( $global_type, $member_type );
update_user_meta( $user_id, '_bp_member_member_type', $global_type );
}
} else {
// Overwrite existing member type
update_user_meta( $user_id, '_bp_member_member_type', $member_type );
}
}
add_action( 'bp_set_member_type', 'bp_set_global_member_type', 10, 3 );
/**
* Ensures that bp_get_member_type() returns the user's global buddypress member type(s)
*
* @since 1.0
*/
function bp_force_global_member_type( $member_type, $user_id, $single ) {
$global_type = get_user_meta( $user_id, '_bp_member_member_type', $single );
if ( $single == 'true' ) {
$member_type = array_pop( $global_type );
} else {
// Make sure it's a valid member type
if ( ! empty( $global_type[0] ) ) {
foreach( $global_type as $gt_key ) {
foreach( $gt_key as $key => $type_name ) {
// Remove invalid types
if ( ! bp_get_member_type_object( $type_name ) ) unset( $global_type[0][$key] );
}
}
$member_type = $global_type[0];
} else {
$member_type = false; // No member type
}
}
return $member_type;
}
add_filter( 'bp_get_member_type', 'bp_force_global_member_type', 10, 3 );
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment