Last active
February 3, 2020 12:45
-
-
Save codelion7/bcb68af1cb8b417b23b51161da67eb37 to your computer and use it in GitHub Desktop.
Enable Global Member Types in BuddyPress
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?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