Created
November 16, 2015 17:59
-
-
Save cartpauj/384d3582f8eb301cc049 to your computer and use it in GitHub Desktop.
Adds display name settings to MemberPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: MemberPress Display Name | |
Plugin URI: https://memberpress.com | |
Description: Adds a Display Name field to MemberPress signup and account pages | |
Version: 1.0 | |
Author: Caseproof, LLC | |
Author URI: http://caseproof.com/ | |
Copyright: 2004-2014, Caseproof, LLC | |
*/ | |
function mpdn_show_on_registration() { | |
?> | |
<div class="mp-form-row"> | |
<div class="mp-form-label"> | |
<label>Display Name Publically As:*<br/><small>Must be different than your username and email address</small></label> | |
</div> | |
<input type="text" name="mepr_user_display_name" id="mepr_user_display_name" class="mepr-form-input mepr-display-name" value="<?php echo (isset($_POST['mepr_user_display_name']) && !empty($_POST['mepr_user_display_name']))?stripslashes($_POST['mepr_user_display_name']):''; ?>" /> | |
</div> | |
<?php | |
} | |
add_action('mepr-after-password-fields', 'mpdn_show_on_registration', 9); | |
function mpdn_validate_registration($errors) { | |
$mepr_options = MeprOptions::fetch(); | |
//Ignore logged in users | |
if(MeprUtils::is_user_logged_in()) { return $errors; } | |
if(empty($_POST['mepr_user_display_name'])) { | |
$errors[] = "You must enter a Public Display Name"; | |
return $errors; | |
} | |
if($mepr_options->username_is_email) { | |
if(stripslashes($_POST['user_email']) == stripslashes($_POST['mepr_user_display_name'])) { | |
$errors[] = "Your Public Display Name must be different than your Email Address"; | |
} | |
} | |
else { | |
if(stripslashes($_POST['user_email']) == stripslashes($_POST['mepr_user_display_name'])) { | |
$errors[] = "Your Public Display Name must be different than your Email Address"; | |
} | |
if(stripslashes($_POST['user_login']) == stripslashes($_POST['mepr_user_display_name'])) { | |
$errors[] = "Your Public Display Name must be different than your Username"; | |
} | |
} | |
return $errors; | |
} | |
add_filter('mepr-validate-signup', 'mpdn_validate_registration'); | |
function mpdn_save_registration($txn) { | |
//If it's not set, let's bail - something's wrong or the user is already logged in | |
if(!isset($_POST['mepr_user_display_name'])) { return; } | |
$display_name = stripslashes($_POST['mepr_user_display_name']); | |
$user = new MeprUser($txn->user_id); | |
if(isset($user->ID) && (int)$user->ID > 0) { | |
$user->display_name = $display_name; | |
$user->store(); | |
//Set the nickname to the display name also, why not? | |
update_user_meta($user->ID, 'nickname', $display_name); | |
} | |
} | |
add_action('mepr-signup', 'mpdn_save_registration'); | |
function mpdn_show_on_account($user) { | |
?> | |
<div class="mp-form-row"> | |
<div class="mp-form-label"> | |
<label>Display Name Publically As:*<br/><small>Must be different than your username and email address</small></label> | |
</div> | |
<input type="text" name="mepr_user_display_name" id="mepr_user_display_name" class="mepr-form-input mepr-display-name" value="<?php echo $user->display_name; ?>" /> | |
</div> | |
<?php | |
} | |
add_action('mepr-account-home-fields', 'mpdn_show_on_account'); | |
function mpdn_validate_on_account($errors, $user) { | |
if(!isset($_POST['mepr_user_display_name']) || empty($_POST['mepr_user_display_name'])) { | |
$errors[] = "You must enter a Public Display Name"; | |
return $errors; | |
} | |
$display_name = stripslashes($_POST['mepr_user_display_name']); | |
$new_email = stripslashes($_POST['user_email']); | |
$old_email = $user->user_email; | |
$username = $user->user_login; | |
if($display_name == $new_email || $display_name == $old_email) { | |
$errors[] = "Your Public Display Name cannot be the same as your Email Address"; | |
} | |
if($display_name == $username) { | |
$errors[] = "Your Public Display Name cannot be the same as your Username"; | |
} | |
return $errors; | |
} | |
add_filter('mepr-validate-account', 'mpdn_validate_on_account', 11, 2); | |
function mpdn_save_account($user) { | |
$display_name = stripslashes($_POST['mepr_user_display_name']); | |
$user->display_name = $display_name; | |
$user->store(); | |
//Set the nickname to the display name also, why not? | |
update_user_meta($user->ID, 'nickname', $display_name); | |
} | |
add_action('mepr-save-account', 'mpdn_save_account'); |
mepr-signup
is processed immediately after step one of the signup process. You can find it in .../memberpress/app/controllers/MeprCheckoutCtrl.php
to see there's no delay there.
MeprHooks::do_action('mepr-signup', $txn);
Thanks @cartpauj. I've found that the issue is downstream from here, as you say. I appreciate your time to respond.
Hi, where I can add this php file? thankypu
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @cartpauj. Thanks for this. It's great. I'm having an issue though where there is a couple minute period between when the user signs up, and when this function fires to save their display name. I think the problem is
add_action('mepr-signup', 'mpdn_save_registration');
fires once their payment processes, but the user is still active and using the site before their payment has processed. Is there a different MP hook that I could use to save their display_name when they submit the signup form instead of after their payment processes?
Thanks!
John