Jump to content

Cybercli

New Members
  • Posts

    3
  • Joined

  • Last visited

Posts posted by Cybercli

  1. The following code works as is to promote a user role when a points balance minimum is met, but I also need the role to change back to prior role if the points balance falls below the minimum. For example if points balance drops to 900 then the new role will be set to 'contributor'.

     /**
         * 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;
        }

     

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.