Skip to content

Instantly share code, notes, and snippets.

@eighty20results
Created November 11, 2016 15:13
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 eighty20results/1800dbcb41eb73783110380de0a871f6 to your computer and use it in GitHub Desktop.
Save eighty20results/1800dbcb41eb73783110380de0a871f6 to your computer and use it in GitHub Desktop.
Custom PMPro Membership Number for @jacobeels
<?php
/*
Member Numbers
* Change the generate_member_number function if your member number needs to be in a certain format.
* Member numbers are generated when users are registered or when the membership account page is accessed for the first time.
*/
//Generate member_number when a user is registered.
function generate_member_number($user_id)
{
$member_number = get_user_meta($user_id, "member_number", true);
//if no member number, create one
if(empty($member_number))
{
global $wpdb;
//this code gets the last member number used and increments it, adding a prefix based on level at checkout
while(empty($member_number))
{
global $pmpro_level;
//if no level try to get from user_id
if(empty($pmpro_level))
$pmpro_level = pmpro_getMembershipLevelForUser($user_id);
//if no level, we can't get their number, bail
if(empty($pmpro_level))
return false;
//get number
$r = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = 'member_number' ORDER BY umeta_id DESC LIMIT 1");
if(empty($r))
$number = 1;
else
$number = intval(substr($r, 2)) + 1;
$prefix = '11930812';
//put them together
$member_number = $prefix . str_pad($number, 8, '0', STR_PAD_LEFT);
}
//save to user meta
update_user_meta($user_id, "member_number", $member_number);
return $member_number;
}
}
add_action('user_register', 'generate_member_number');
//get or generate a member number
function get_member_number($user_id) {
return generate_member_number($user_id);
}
//Show it on the membership account page.
function pmpromn_pmpro_account_bullets_bottom()
{
if(is_user_logged_in())
{
global $current_user;
$member_number = get_member_number($current_user->ID);
//show it
if(!empty($member_number))
{
?>
<li><strong><?php _e("Member Number", "pmpro");?>:</strong> <?php echo $member_number?></li>
<?php
}
}
}
add_action('pmpro_account_bullets_bottom', 'pmpromn_pmpro_account_bullets_bottom');
add_action('pmpro_invoice_bullets_bottom', 'pmpromn_pmpro_account_bullets_bottom');
//show member_number in confirmation emails
function pmpromn_pmpro_email_filter($email)
{
global $wpdb;
//only update admin confirmation emails
if(strpos($email->template, "checkout") !== false)
{
if(!empty($email->data) && !empty($email->data['user_login']))
{
$user = get_user_by("login", $email->data['user_login']);
if(!empty($user) && !empty($user->ID))
{
$member_number = get_member_number($user->ID);
if(!empty($member_number))
$email->body = str_replace("<p>Membership Level", "<p>Member Number:" . $member_number . "</p><p>Membership Level", $email->body);
}
}
}
return $email;
}
add_filter("pmpro_email_filter", "pmpromn_pmpro_email_filter", 30, 2);
//Add 'Member Number' Column to Members List Header
function mn_pmpro_memberslist_extra_cols_header($theusers)
{
?>
<th><?php _e('Member Number', 'pmpro');?></th>
<?php
}
add_action('pmpro_memberslist_extra_cols_header', 'mn_pmpro_memberslist_extra_cols_header');
//Add 'Member Number' Column to Members List Rows
function mn_pmpro_memberslist_extra_cols_body($theuser)
{
?>
<td>
<?php
$member_number = get_member_number($theuser->ID);
echo $member_number
?>
</td>
<?php
}
add_action('pmpro_memberslist_extra_cols_body', 'mn_pmpro_memberslist_extra_cols_body');
/*
Add Member Number to memberslist CSV export
*/
//add the column
function mn_pmpro_members_list_csv_extra_columns($columns) {
$columns["membernumber"] = "mn_pmpro_members_list_csv_memberkey";
return $columns;
}
add_filter("pmpro_members_list_csv_extra_columns", "mn_pmpro_members_list_csv_extra_columns", 10);
//call back to get the member key
function mn_pmpro_members_list_csv_memberkey($user) {
$membernumber = get_member_number($user->ID);
return $membernumber;
}
/*
Add Member Number to the edit user page
*/
function mn_user_profile($user) {
?>
<h3><?php _e("Member Number", "mn"); ?></h3>
<table class="form-table">
<tr>
<th><label for="membernumber"><?php _e('Member Number', 'pmpromk');?></label></th>
<td><?php echo get_member_number($user->ID);?></td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'mn_user_profile');
add_action('edit_user_profile', 'mn_user_profile');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment