Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ioniacob/8bf47f5094ab9ba8899c to your computer and use it in GitHub Desktop.
Save ioniacob/8bf47f5094ab9ba8899c to your computer and use it in GitHub Desktop.
Change a users WordPress role based on their current myCRED balance.
/**
* Promote Based on Balance
* Changes a users role based on their myCRED balance.
* @version 1.0.4
*/
add_filter( 'mycred_add_finished', 'check_for_role_change', 99, 3 );
function check_for_role_change( $reply, $request, $mycred ) {
// Make sure that if any other filter has declined this we also decline
if ( $reply === false ) return $reply;
// Exclude admins
if ( user_can( $request['user_id'], 'manage_options' ) ) return $reply;
extract( $request );
// Minimum balance requirement for each role
$thresholds = array(
'contributor' => 100,
'author' => 1000,
'editor' => 10000,
'administrator' => 100000
);
// Get users current balance
$current_balance = $mycred->get_users_balance( $user_id, $type );
$current_balance = $current_balance + $amount;
// Check if the users current balance awards a new role
$new_role = false;
foreach ( $thresholds as $role => $min ) {
if ( $current_balance > $min )
$new_role = $role;
}
// Change users role if we have one
if ( $new_role !== false )
wp_update_user( array(
'ID' => $user_id,
'role' => $new_role
) );
return $reply;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment