🔴 Advanced
⏱️ 30 minutes
⏱️ 30 minutes
Action Hooks
Login Actions
// Before login form displays
do_action('attrua_before_login_form');
// After successful login
do_action('attrua_after_login', $user);
// Login failed
do_action('attrua_login_failed', $username, $error);
Registration Actions
// Before registration
do_action('attrua_before_registration', $user_data);
// After user created
do_action('attrua_after_registration', $user_id);
// Registration failed
do_action('attrua_registration_failed', $errors);
Filter Hooks
Login Filters
// Modify login redirect
add_filter('attrua_login_redirect', function($redirect_to, $user) {
if (in_array('premium', $user->roles)) {
return '/premium-dashboard/';
}
return $redirect_to;
}, 10, 2);
// Customize login form args
add_filter('attrua_login_form_args', function($args) {
$args['remember'] = false;
return $args;
});
Registration Filters
// Add custom validation
add_filter('attrua_registration_errors', function($errors, $user_data) {
if (strlen($user_data['password']) < 12) {
$errors->add('password_length', 'Password must be 12+ characters');
}
return $errors;
}, 10, 2);
// Modify user meta
add_filter('attrua_registration_user_meta', function($meta, $user_data) {
$meta['signup_source'] = 'custom_form';
$meta['signup_date'] = current_time('mysql');
return $meta;
}, 10, 2);
Form Display Filters
// Add custom field to login form
add_action('attrua_login_form_fields', function() {
echo '<div class="custom-field">';
echo '<label>Department</label>';
echo '<select name="department">...</select>';
echo '</div>';
});
// Modify error messages
add_filter('attrua_error_message', function($message, $code) {
if ($code === 'invalid_username') {
return 'Please check your email address';
}
return $message;
}, 10, 2);
Example Use Cases
Track Login History
add_action('attrua_after_login', function($user) {
update_user_meta($user->ID, 'last_login', current_time('mysql'));
update_user_meta($user->ID, 'login_count',
(int) get_user_meta($user->ID, 'login_count', true) + 1
);
});
Send Welcome Email
add_action('attrua_after_registration', function($user_id) {
$user = get_user_by('id', $user_id);
wp_mail(
$user->user_email,
'Welcome to Our Site!',
'Thanks for registering...'
);
});
Restrict Registration by Domain
add_filter('attrua_registration_errors', function($errors, $user_data) {
$allowed_domains = ['company.com', 'partner.com'];
$email_domain = substr(strrchr($user_data['email'], '@'), 1);
if (!in_array($email_domain, $allowed_domains)) {
$errors->add('domain', 'Only company email addresses allowed');
}
return $errors;
}, 10, 2);
Complete Hook Reference
For a complete list of all available hooks, filters, and code examples, visit: