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/
The topic ‘Automatic Default Membership’ is closed to new replies.