Use the PHP code snippet below to auto-login users who click on links in your email campaigns.
This is useful, for example, when sending an abandoned cart email series or custom magic login links.
<?php
add_filter( 'noptin_actions_page_template', 'noptin_custom_code_autologin_user', 0 );
function noptin_custom_code_autologin_user( $template ) {
$handler = noptin()->actions_page;
// Check if a guest has clicked a link in a previous email.
if ( 'email_click' === $handler->get_request_action() && 0 === get_current_user_id() ) {
// Decode the recipient details.
$recipient = $handler->get_request_recipient();
// If we have a user id, log them in.
if ( ! empty( $recipient['email'] ) ) {
$user = get_user_by( 'email', $recipient['email'] );
}
if ( empty( $user ) && ! empty( $recipient['uid'] ) ) {
$user = get_user_by( 'id', $recipient['uid'] );
}
if ( ! empty( $user ) ) {
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, true );
do_action( 'wp_login', $user->user_login, $user );
}
}
return $template;
}
Tip: Add this code snippet to your theme’s functions.php file or use the code snippets plugin.
Code Explanation
- Line 2: Registers a filter hook that’s called whenever someone opens the Noptin actions page.
- Line 7: Ensures the current action is a click event and that the user who took the action is not logged in.
- Line 10: Decodes the current recipient details.
- Line 21: Logs in the current recipient if their details match an existing user.
Leave a Reply