Forked from technosailor/ab-bp-retroactiveusers.php
Last active
November 16, 2021 22:52
-
-
Save slaFFik/46ae6c250f6e4376c4b21cc0ef6b57ab to your computer and use it in GitHub Desktop.
Populate WordPress User Meta so that even users who have never logged in will display on the Members BP page
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 | |
/* | |
Plugin Name: Retroactive BP User Acticity | |
Plugin URI: https://gist.github.com/3953927 | |
Description: Makes all BuddyPress users visible immediately on user creation and retroactively adjust users to allow for their display before logging in. | |
Author: Aaron Brazell | |
Version: 1.0 | |
Author URI: http://technosailor.com | |
License: MIT | |
License URI: http://opensource.org/licenses/MIT | |
*/ | |
/** | |
* A BuddyPress class for user creation simplicity | |
* | |
* @author Aaron Brazell <[email protected]> | |
* @package ab-bp-prepopulate-users | |
*/ | |
class BP_Prepopulate_Users { | |
// MySQL default limit is 1000, but you might have more users, so modify this value accordingly. | |
const USERS_NUMBER = 1000; | |
/** | |
* PHP constructor method. Requires PHP 5.2+ | |
* | |
* @author Aaron Brazell <[email protected]> | |
* @package ab-bp-prepopulate-users | |
*/ | |
public function __construct() { | |
$this->hooks(); | |
} | |
/** | |
* Method to tie methods in this class into the WordPress hook system | |
* | |
* @author Aaron Brazell <[email protected]> | |
* @package ab-bp-prepopulate-users | |
* @return void | |
*/ | |
public function hooks() { | |
// Fix existing users. Will only ever be run once | |
add_action( 'wp_loaded', array( $this, 'retroactive_user_fix' ) ); | |
// New users get the last_active meta | |
add_action( 'user_register', array( $this, 'user_active_on_create' ) ); | |
} | |
/** | |
* A method for retroactively loading existing users with the last_active meta_key. BuddyPress will not show | |
* users who have never logged in so this is a quick fix to get around that problem. Method stores the abbp_retroactive | |
* option in the WordPress options table after it is run once on page load. After that, the method short circuits | |
* if the option exists, preventing unnecessary database queries in the future. | |
* | |
* @author Aaron Brazell <[email protected]> | |
* @package ab-bp-prepopulate-users | |
* @return void | |
*/ | |
public function retroactive_user_fix() { | |
if( get_option( 'abbp_retroactive' ) ) { | |
return; | |
} | |
$users = get_users( array( | |
'fields' => 'ID', | |
'number' => BP_Prepopulate_Users::USERS_NUMBER | |
) ); | |
foreach( $users as $user_id ) { | |
// Check to see if the user has activity | |
if ( bp_get_user_last_activity( $user_id ) ) { | |
continue; | |
} | |
// Inactive so lets activate | |
bp_update_user_last_activity( $user_id, bp_core_current_time() ); | |
} | |
// Clean transient cache | |
delete_transient( 'bp_active_member_count' ); | |
// Only do this once so not to tax the database unnecessarily | |
add_option( 'abbp_retroactive', true ); | |
} | |
/** | |
* A method for pre-populating the last_active meta_key in the usermeta table. BuddyPress only displays users with | |
* this key so we force the user to have that key to get around the limitation. Hooks on the user_register hook. | |
* | |
* @author Aaron Brazell <[email protected]> | |
* @package ab-bp-prepopulate-users | |
* @return void | |
*/ | |
public function user_active_on_create( $user_id ) { | |
bp_update_user_last_activity( $user_id, bp_core_current_time() ); | |
// Clean transient cache, just in case | |
delete_transient( 'bp_active_member_count' ); | |
} | |
} | |
new BP_Prepopulate_Users; |
This is great, thanks, exactly what we needed. How would we include
or require
this? Or is require_once
enough? Thanks!
Superb, thanks so much.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Interesting!