/**
* Exmaples of hooking into the existing WordPress filters during the new user creation and sets the First and Last name fields
* from the PayPal data.
*/
/**
* Filters user data before the record is created or updated.
*
* It only includes data in the wp_users table wp_user, not any user metadata.
*
* @since 4.9.0
*
* @param array $data {
* Values and keys for the user.
*
* @type string $user_login The user's login. Only included if $update == false
* @type string $user_pass The user's password.
* @type string $user_email The user's email.
* @type string $user_url The user's url.
* @type string $user_nicename The user's nice name. Defaults to a URL-safe version of user's login
* @type string $display_name The user's display name.
* @type string $user_registered MySQL timestamp describing the moment when the user registered. Defaults to
* the current UTC timestamp.
* }
* @param bool $update Whether the user is being updated rather than created.
* @param int|null $id ID of the user to be updated, or NULL if the user is being created.
*/
add_filter( 'wp_pre_insert_user_data', function( $data = array(), $update = false, $user_id = 0 ) {
// We only want to check new users.
if ( false === $update ) {
// Next check if this from a PayPal IPN processiing event.
if ( ( isset( $_POST['ipn_track_id'] ) ) && ( ! empty( $_POST['ipn_track_id'] ) ) ) {
// Next check if the 'first_name' and 'last_name' post fields are present.
if ( ( isset( $_POST['last_name'] ) ) && ( ! empty( $_POST['last_name'] ) ) && ( isset( $_POST['first_name'] ) ) && ( ! empty( $_POST['first_name'] ) ) ) {
// Rebuild the display_name and user_nicename with better values.
$data['display_name'] = esc_attr( $_POST['first_name'] ) . ' ' . esc_attr( $_POST['last_name'] );
$data['user_nicename'] = $data['display_name'];
}
}
}
// Always return $data.
return $data;
}, 1, 3 );
/**
* Filters a user's meta values and keys immediately after the user is created or updated
* and before any user meta is inserted or updated.
*
* Does not include contact methods. These are added using `wp_get_user_contact_methods( $user )`.
*
* @since 4.4.0
*
* @param array $meta {
* Default meta values and keys for the user.
*
* @type string $nickname The user's nickname. Default is the user's username.
* @type string $first_name The user's first name.
* @type string $last_name The user's last name.
* @type string $description The user's description.
* @type bool $rich_editing Whether to enable the rich-editor for the user. False if not empty.
* @type bool $syntax_highlighting Whether to enable the rich code editor for the user. False if not empty.
* @type bool $comment_shortcuts Whether to enable keyboard shortcuts for the user. Default false.
* @type string $admin_color The color scheme for a user's admin screen. Default 'fresh'.
* @type int|bool $use_ssl Whether to force SSL on the user's admin area. 0|false if SSL is
* not forced.
* @type bool $show_admin_bar_front Whether to show the admin bar on the front end for the user.
* Default true.
* }
* @param WP_User $user User object.
* @param bool $update Whether the user is being updated rather than created.
*/
add_filter( 'insert_user_meta', function( $meta = array(), WP_User $user, $update = false ) {
// We only want to check new users.
if ( false === $update ) {
// Next check if this from a PayPal IPN processiing event.
if ( ( isset( $_POST['ipn_track_id'] ) ) && ( ! empty( $_POST['ipn_track_id'] ) ) ) {
// Next check if the 'first_name' and 'last_name' post fields are present.
if ( ( isset( $_POST['last_name'] ) ) && ( ! empty( $_POST['last_name'] ) ) && ( isset( $_POST['first_name'] ) ) && ( ! empty( $_POST['first_name'] ) ) ) {
// Rebuild the 'nickname' with better values.
$meta['nickname'] = esc_attr( $_POST['first_name'] ) . ' ' . esc_attr( $_POST['last_name'] );
// Then fill in 'last_name' and 'first_name' fields.
$meta['last_name'] = esc_attr( $_POST['last_name'] );
$meta['first_name'] = esc_attr( $_POST['first_name'] );
}
}
}
// Always return $meta.
return $meta;
}, 1, 3 );
Copy to clipboard