2013-04-03 2 views
1

У меня есть клиент, который хочет, чтобы сайт, который требует, чтобы люди предоставляли свой адрес электронной почты перед входом каждый раз. Как пользовательский логин, но только с адресом электронной почты. Основная идея заключается в том, чтобы видеть, когда каждый адрес электронной почты посещает сайт и куда он идет, чтобы он мог отправлять информацию на этот адрес в зависимости от того, что они просматривают на сайте.Требовать только адрес электронной почты для входа на сайт

Я работаю с wordpress и рекомендовал сделать сайт доступным только для зарегистрированных пользователей, а затем отслеживать эту активность с помощью плагина, такого как wp-activity. Однако он не хочет, чтобы люди, посещающие сайт, должны были помнить пароль. Он просто хочет отслеживать активность пользователя по адресу электронной почты.

Есть ли способ сделать это, не требуя от пользователя регистрации с адресом электронной почты и паролем?

+5

Он собирается получить много 'asdf @ asdf.com' .. – Blorgbeard

+2

, если вы хотите, чтобы пользователи регистрировались с электронной почтой, убедитесь, что письмо действительно и с помощью подтверждения для подтверждения – rusly

+0

@Blorgbeard - wordpress имеет функцию для активации пользователя путем отправки почты проверки подлинности. поэтому все предполагаемые [email protected] будут нулевыми –

ответ

1

Что-то, как это должно работать, но я не проверял:

function o99_my_email_login($user, $pass) { 
    global $wpdb; 
    if (is_email($user)) { 
     $found = $wpdb->get_var($wpdb->prepare("SELECT user_login FROM $wpdb->users WHERE user_email = '%s'", $user)); 
     $user = $found ? $found : $user; 
    } else { 
     $user = 1; // or $username = 1; ?? 
    } 
    return; 
} 
add_action('wp_authenticate', 'o99_my_email_login', 10, 2); 

Кроме того, эта функция работает аналогично, но я не уверен, чтобы подмигнули безопасность ..

add_action('wp_authenticate','o99_smsa_allow_email_login'); 


function o99_smsa_allow_email_login($username) { 
$user = get_user_by_email($username); 
if(!empty($user->user_login)) 
$username = $user->user_login; 
return $username; 
} 

или просто использовать готовый плагин, такой как this one : CLICK

Смежные вопросы