functions.php
// functions.php
function custom_login_form_shortcode($atts) {
extract(shortcode_atts(array(
‘redirect’ => home_url(),
), $atts));
if (!is_user_logged_in()) {
// Login form HTML
$form = ‘
$form .= ‘
Login
‘;
// Display error messages if any
if (isset($_GET[‘login’]) && $_GET[‘login’] == ‘failed’) {
$form .= ‘
Login failed. Please try again.
‘;
} elseif (isset($_GET[‘login’]) && $_GET[‘login’] == ’empty’) {
$form .= ‘
Please fill in all fields.
‘;
}
// Login form
$form .= wp_login_form(array(
‘echo’ => false,
‘redirect’ => $redirect,
‘form_id’ => ‘custom_loginform’,
‘label_username’ => __(‘Username or Email’),
‘label_password’ => __(‘Password’),
‘label_remember’ => __(‘Remember Me’),
‘label_log_in’ => __(‘Log In’),
‘remember’ => true
));
// Add lost password link
$form .= ‘
‘;
$form .= ‘Forgot Password?‘;
if (get_option(‘users_can_register’)) {
$form .= ‘ | Register‘;
}
$form .= ‘
‘;
$form .= ‘
‘;
return $form;
} else {
// User is already logged in
$current_user = wp_get_current_user();
return ‘
You are already logged in as ‘ . esc_html($current_user->display_name) . ‘
‘;
}
}
add_shortcode(‘custom_login_form’, ‘custom_login_form_shortcode’);
// Handle login redirects
add_action(‘wp_login_failed’, ‘custom_login_failed’);
function custom_login_failed($username) {
$referrer = wp_get_referer();
if ($referrer && !strstr($referrer, ‘wp-login’) && !strstr($referrer, ‘wp-admin’)) {
wp_redirect(add_query_arg(‘login’, ‘failed’, $referrer));
exit;
}
}
// Handle empty login fields
add_action(‘authenticate’, ‘custom_authenticate’, 1, 3);
function custom_authenticate($user, $username, $password) {
if (empty($username) || empty($password)) {
$referrer = wp_get_referer();
if ($referrer && !strstr($referrer, ‘wp-login’) && !strstr($referrer, ‘wp-admin’)) {
wp_redirect(add_query_arg(‘login’, ’empty’, $referrer));
exit;
}
}
}




