используя wp_authenticate () для перенаправления определенных пользователей при входе в систему

Наш сайт использует страницу входа в WordPress – WooCommerce для входа в систему.

Я пытаюсь использовать wp_authenticate () для достижения следующих целей:

1) Вход клиента на наш новый веб-сайт, введите их имя пользователя и пароль и нажмите кнопку «Войти». Если вы хотите увидеть файл входа в WooCommerce, нажмите здесь .

2) Наш новый веб-сайт проходит через список, если совпадение имени пользователя. Если имя пользователя совпадает, даже не смотрите на пароль, просто перенаправьте пользователя на другой URL-адрес, например google.com.

3) если имя пользователя не совпадает с нашим списком, просто позвоните им, как обычно.

С помощью JQuery кто-то помог мне придумать следующий код:

var names = new Array(”BILL”, ”JIM”, ”BOB”); // get all names into array, and all in uppercase var dest_url = ”http://www.website.com”; // URL we want to send them to jQuery(document).ready(function () { jQuery(”input[name='login']”).click(function(event){ event.preventDefault(); // prevent default form action var current_name = jQuery(”#username”).val(); current_name = current_name.trim().toUpperCase(); if ( -1 != jQuery.inArray(current_name, names) ) { alert(”Redirecting ” + current_name + ” to ” + dest_url); window.location = dest_url; // send to desired URL } else document.getElementsByClassName(”login”)[0].submit(); // input name not on our list, so just do normal submit action }); }); 

Но я не уверен, что wp_authenticate () может фактически содержать скрипт jquery внутри. Любое предложение было бы весьма признательным.

Во-первых, я бы рекомендовал сделать это на PHP, а не на javascript.

Во-вторых, у вас есть несколько вариантов, используя встроенную функциональность WordPress.

Если все, о чем вы заботитесь, это имя пользователя, и не волнует, успешно ли они вошли в систему с правильным паролем, вы можете использовать фильтр, найденный в wp_authenticate ()

 // This is the filter wp_authenticate fires apply_filters( 'authenticate', null, $username, $password ); 

Зная это, вы можете написать небольшой маленький плагин или добавить этот код в файл functions.php вашей темы:

 // Run this filter with priority 9999 (last, or close to last), after core WP filters have run add_filter('authenticate', 'redirect_certain_users', 9999, 3); // Your custom filter function function redirect_certain_users( $user, $username, $password) { // Assumes you write a function called get_list_of_users_to_redirect that returns an array similar to that in your sample code $redirect_users = get_list_of_users_to_redirect(); // If the user is in the array of users to redirect, then send them away if ( in_array( $username, $redirect_users ) ) { header("location:http://www.example.com"); die(); } return $user; } 

Обратите внимание, что этот код не проверен, но должен получить от вас как минимум 90% пути.