Untitled
unknown
plain_text
2 years ago
3.7 kB
5
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...