mirror of
https://gh.wpcy.net/https://github.com/mainwp/Code-Snippets-Functions.git
synced 2026-05-02 12:02:25 +08:00
https://github.com/strangerstudios/pmpro-snippets-library/blob/dev/frontend-pages/generate-unique-membership-number.php
82 lines
2.7 KiB
Text
82 lines
2.7 KiB
Text
//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
|
|
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 );
|