Untitled

 avatar
unknown
plain_text
5 months ago
2.3 kB
5
Indexable

/**
 * Generate a Unique Member Number for each user.
 * 
 * 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. This code will only generate one member number per user (not per membership).
 * 
 * title: Generate a Unique Member Number for Each User
 * layout: snippet
 * collection: misc
 * category: membership-number
 * 
 */

function generate_member_number( $user_id ) {
	// Get member number.
	$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 that's 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, 5 );
			
			$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 the user's Membership Number on the Membership Account page.
 */

function my_pmpro_member_number_account_bullets() {

	// If the generate number function doesn't exist, return.
	if ( ! function_exists( 'generate_member_number' ) ) {
		return;
	}

	// Only run for logged in users.
	if ( ! is_user_logged_in() ) {
		return;
	}

	// Get member number.
	global $current_user;
	$member_number = get_user_meta( $current_user->ID, 'member_number', true );

	// If no member number, create one.
	if ( empty( $member_number ) )
		$member_number = generate_member_number( $current_user->ID );
	
	// Show the member number.
	if ( ! empty( $member_number ) ) { ?>
		<li><strong><?php esc_html_e( 'Member Number', 'paid-memberships-pro' ); ?>:</strong> <?php echo $member_number; ?></li>
	<?php
	}
}
add_action( 'pmpro_account_bullets_bottom', 'my_pmpro_member_number_account_bullets' );
Editor is loading...
Leave a Comment