Title: Automatic Default Membership
Last modified: August 31, 2016

---

# Automatic Default Membership

 *  [joedsileo1988](https://wordpress.org/support/users/joedsileo1988/)
 * (@joedsileo1988)
 * [10 years, 4 months ago](https://wordpress.org/support/topic/automatic-default-membership/)
 * Like many others I ran into an issue where users would register but not pick 
   a membership level, or their membership would expire and they wouldn’t be able
   to see content because it would be restricted behind the “free and up” member
   level wall.
 * Therefore I created a supplemental plugin to handle it.
 * I request that code similar to this be incorporated into PMPro.
 *     ```
       <?php
       /**
        * @package PMPro_Auto_Member_Levels
        * @version 1.0
        */
       /*
       Plugin Name: PMPro Auto Member Levels
       Plugin URI: http://www.dynamicpub.com
       Description: Designed to give non members or expired members the default membership level.
       Author: Joseph Sileo
       Version: 1.0
       Author URI: http://www.dynamicpub.com
       License: GPL2
       */
       /*  Copyright 2016  Joseph Sileo  (email : no-reply@dynamicpub.com)
   
           This program is free software; you can redistribute it and/or modify
           it under the terms of the GNU General Public License, version 2, as
           published by the Free Software Foundation.
   
           This program is distributed in the hope that it will be useful,
           but WITHOUT ANY WARRANTY; without even the implied warranty of
           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           GNU General Public License for more details.
   
           You should have received a copy of the GNU General Public License
           along with this program; if not, write to the Free Software
           Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
       */
       function pmpro_default_membership_level_panel() {
       add_submenu_page('pmpro-membershiplevels', __('Default Membership Level', 'pmpro'), __('Default Membership Level', 'pmpro'), 'activate_plugins', 'pmpro-defaultmembershiplevel', 'pmpro_defaultmembershiplevel');
       }
       add_action('admin_menu', 'pmpro_default_membership_level_panel');
   
       function install_pmpro_dml_options() {
       $pmpro_dml_options = array(	'pmpro_dml_version' 	=> '1.0',
       					 	'pmpro_dml_default_level'	=> '1');
   
       add_option('PMPro_Default_Membership_Level_Options',$pmpro_dml_options);
       }
   
       function pmpro_defaultmembershiplevel(){
       	global $pmpro_dml_options;
       	global $wpdb;
       	$pmpro_dml_options = get_option('PMPro_Default_Membership_Level_Options');
       	if(empty($pmpro_dml_options)){
       		install_pmpro_dml_options();
       		$pmpro_dml_options = get_option('PMPro_Default_Membership_Level_Options');
       	}
       	$default_membership_level = $pmpro_dml_options['pmpro_dml_default_level'];
       	if(isset($_POST['PMPro_DML_Save_Settings'])){
       		if($pmpro_dml_options['pmpro_dml_default_level']!==$_POST['pmpro_dml_default_level']){
       			$pmpro_dml_options['pmpro_dml_default_level'] = $_POST['pmpro_dml_default_level'];
       			update_option('PMPro_Default_Membership_Level_Options', $pmpro_dml_options);
       			$pmpro_dml_options = get_option('PMPro_Default_Membership_Level_Options');
       			$default_membership_level = $pmpro_dml_options['pmpro_dml_default_level'];
       		}
       		unset($_POST['PMPro_DML_Save_Settings']);
       	}
       ?>
       <div class="wrap">
       <form id="pmpro-dml-settings" method="post">
       <h2>PMPro Default Membership Level Settings</h2>
       	<br>
           <br>
           This Plugin will default all registered users to the level selected below if they do not have a level selected. It will also convert all expired memberships to this level when the user logs in.
           <br>
           <br>
               <?php echo(pmpro_dml_level_selectbox($default_membership_level)); ?><input type="submit" value="Save Settings" id="submit" class="button-primary" name="PMPro_DML_Save_Settings">
       </form>
       </div>
       <?php
   
       }
   
       function pmpro_dml_level_selectbox($selected_id){
       	global $wpdb;
       	$membership_levels_table = $wpdb->prefix . 'pmpro_membership_levels';
       	$membership_levels = $wpdb->get_results("SELECT id,name FROM $membership_levels_table WHERE 1 ORDER BY id", ARRAY_A);
       	$selectbox = '<select id="pmpro_dml_default_level" name="pmpro_dml_default_level"  class="code">';
       	foreach ($membership_levels as $membership_level){
       		$membership_id = $membership_level['id'];
       		$membership_name = $membership_level['name'];
       		if($membership_id==$selected_id){
              		$selectbox .= '<option value="'.$membership_id.'" selected>'.$membership_name.'</option>';
       		} else {
       			$selectbox .= '<option value="'.$membership_id.'">'.$membership_name.'</option>';
       		}
           }
       	$selectbox .= '</select>';
       	return $selectbox;
       }
   
       add_action( 'user_register', 'pmpro_dml_set_level', 10, 1 );
   
       function pmpro_dml_set_level($user_id){
       	global $pmpro_dml_options;
       	global $wpdb;
       	$pmpro_dml_options = get_option('PMPro_Default_Membership_Level_Options');
       	if(empty($pmpro_dml_options)){
       		install_pmpro_dml_options();
       		$pmpro_dml_options = get_option('PMPro_Default_Membership_Level_Options');
       	}
       	$default_membership_level = $pmpro_dml_options['pmpro_dml_default_level'];
           pmpro_changeMembershipLevel($default_membership_level,$user_id);
       }
   
       function pmpro_dml_check_level($user_login, $user){
          	$user_id = $user->ID;
       	$active_levels = pmpro_getMembershipLevelsForUser($user_id);
       	if($active_levels){
       	} else {
       		pmpro_dml_set_level($user_id);
       	}
       }
       add_action('wp_login', 'pmpro_dml_check_level',10, 2);
       ```
   
 * You can pick any level but obviously it is for defaulting to the “free” level
   if you have one. Just drop the code into a blank php file and put that file in
   your plugins folder.
    [https://wordpress.org/plugins/paid-memberships-pro/](https://wordpress.org/plugins/paid-memberships-pro/)

Viewing 1 replies (of 1 total)

 *  [wealthy](https://wordpress.org/support/users/wealthy/)
 * (@wealthy)
 * [10 years, 4 months ago](https://wordpress.org/support/topic/automatic-default-membership/#post-6969162)
 * Maybe it should default to the most expensive level if they cant pick the right
   one lol
 * thanks for the code

Viewing 1 replies (of 1 total)

The topic ‘Automatic Default Membership’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/paid-memberships-pro_f1dacb.svg)
 * [Paid Memberships Pro - Content Restriction, User Registration, & Paid Subscriptions](https://wordpress.org/plugins/paid-memberships-pro/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/paid-memberships-pro/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/paid-memberships-pro/)
 * [Active Topics](https://wordpress.org/support/plugin/paid-memberships-pro/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/paid-memberships-pro/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/paid-memberships-pro/reviews/)

 * 1 reply
 * 2 participants
 * Last reply from: [wealthy](https://wordpress.org/support/users/wealthy/)
 * Last activity: [10 years, 4 months ago](https://wordpress.org/support/topic/automatic-default-membership/#post-6969162)
 * Status: not resolved