The invite_user WordPress PHP action fires immediately after an existing user is invited to join the site, but before the notification is sent.
Usage
add_action('invite_user', 'your_custom_function', 10, 3); function your_custom_function($user_id, $role, $newuser_key) { // your custom code here }
Parameters
- $user_id (int) – The invited user’s ID.
- $role (array) – Array containing role information for the invited user.
- $newuser_key (string) – The key of the invitation.
More information
See WordPress Developer Resources: invite_user
Examples
Log user invitations
Log user invitations to a file for record keeping.
add_action('invite_user', 'log_user_invitation', 10, 3); function log_user_invitation($user_id, $role, $newuser_key) { $user_info = get_userdata($user_id); $log_entry = date("Y-m-d H:i:s") . " - User {$user_info->user_login} (ID: {$user_id}) was invited with role: " . implode(', ', $role) . PHP_EOL; file_put_contents('user_invitations.log', $log_entry, FILE_APPEND); }
Send custom email notification
Send a custom email notification to the site administrator when a user is invited.
add_action('invite_user', 'custom_invite_email_notification', 10, 3); function custom_invite_email_notification($user_id, $role, $newuser_key) { $admin_email = get_option('admin_email'); $user_info = get_userdata($user_id); $subject = "New user invitation: {$user_info->user_login}"; $message = "A new user, {$user_info->user_login} (ID: {$user_id}), has been invited with the role: " . implode(', ', $role); wp_mail($admin_email, $subject, $message); }
Add custom metadata to invited user
Add custom metadata to the invited user’s profile when they are invited.
add_action('invite_user', 'add_custom_user_meta', 10, 3); function add_custom_user_meta($user_id, $role, $newuser_key) { update_user_meta($user_id, 'invitation_key', $newuser_key); }
Track invitation count
Track the number of invitations sent by the site and store it as an option.
add_action('invite_user', 'track_invitation_count', 10, 3); function track_invitation_count($user_id, $role, $newuser_key) { $invitation_count = get_option('invitation_count', 0); update_option('invitation_count', ++$invitation_count); }
Set an expiration date for the invitation
Set an expiration date for the invitation and store it as user metadata.
add_action('invite_user', 'set_invitation_expiration', 10, 3); function set_invitation_expiration($user_id, $role, $newuser_key) { $expiration_date = date('Y-m-d', strtotime('+30 days')); update_user_meta($user_id, 'invitation_expiration_date', $expiration_date); }