Untitled
unknown
plain_text
3 years ago
3.7 kB
8
Indexable
/**
* Generate a Unique Member Number for Display on Membership Account, Confirmation Email and More
*
* 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.
*
* title: Generate a Unique Member Number for Display on Membership Account, Confirmation Email and More
* layout: snippet
* collection: frontend-pages
* category: membership-number
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* Read this companion article for step-by-step directions on either method.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*/
//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 generates a string 10 characters long of numbers and letters
while( empty( $member_number ) ) {
$scramble = md5( AUTH_KEY . current_time('timestamp') . $user_id . SECURE_AUTH_KEY) ;
$member_number = substr($scramble, 0, 10);
$check = $wpdb->get_var( "SELECT meta_value FROM $wpdb->usermeta WHERE meta_value = '" . esc_sql( $member_number ) . "' LIMIT 1" );
if ( $check || is_numeric( $member_number ) ) {
$member_number = NULL;
}
}
//save to user meta
update_user_meta( $user_id, 'member_number', $member_number );
return $member_number;
}
}
add_action( 'user_register', 'generate_member_number' );
//Show it on the membership account page.
function pmpromn_pmpro_account_bullets_bottom () {
if ( is_user_logged_in() ) {
global $current_user;
//get member number
$member_number = get_user_meta( $current_user->ID, 'member_number', true );
//if no number, generate one
if( empty( $member_number ) )
$member_number = generate_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 - THIS CODE EXISTS ELSEWHERE - DO NOT REACTIVATE
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_user_meta( $user->ID, 'member_number', true );
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 );
*/Editor is loading...