Forked from gabrielmerovingi/change-role-based-on-balance
Created
February 6, 2016 15:08
-
-
Save ioniacob/8bf47f5094ab9ba8899c to your computer and use it in GitHub Desktop.
Change a users WordPress role based on their current myCRED balance.
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
/** | |
* 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