J'ai essayé de déchiffrer un moyen d'afficher un message à un utilisateur lors de sa première connexion et je n'arrive pas à le faire fonctionner. Je ne sais pas trop ce qui me manque ou s'il y a autre chose à faire. Toute aide serait appréciée. J'ai l'impression de manquer quelque chose ici.
function ap_new_user_message() {
$current_user = wp_get_current_user();
$user_ID = $current_user->ID;
//global $user_ID;
if( $user_ID ) {
$user_info = get_userdata( $user_ID );
// If user_registered date/time is less than 48hrs from now
// Message will show for 48hrs after registration
if ( strtotime( $user_info->user_registered ) > ( time() - 172800 ) )
echo '<div>display a message</div>';
}
}
Sinon, si je pouvais trouver un moyen de déterminer combien de jours se sont écoulés depuis la création d'un utilisateur, je pourrais faire quelque chose de similaire. Peut-être en ajoutant à la table méta de l'utilisateur?
function first_login($login) {
global $user_ID;
$user = get_userdatabylogin($login);
update_usermeta( $user->ID, 'first_login', date(), time() );
}
add_action('wp_login','first_login');
Et puis appeler pour cela
if first_login(date, time) == (today, ago) {
#do something
}
Mise à jour: Le code de Milo a bien fonctionné. Cependant, il me fallait travailler avec Simple Modal Login d'Eric Meyer. J'ai trouvé cette fonction dans simplemodal-login.php et la redirection de connexion de Peter.
function login_redirect($redirect_to, $req_redirect_to, $user) {
if (!isset($user->user_login) || !$this->is_ajax()) {
return $redirect_to;
}
if ($this->is_plugin_active('peters-login-redirect/wplogin_redirect.php')
&& function_exists('redirect_to_front_page')) {
$redirect_to = redirect_to_front_page($redirect_to, $req_redirect_to, $user);
}
echo "<div id='simplemodal-login-redirect'>$redirect_to</div>";
exit();
}
et a ajouté la redirection de Milo comme ceci:
function login_redirect($redirect_to, $req_redirect_to, $user) {
$regtime = strtotime($user->user_registered);
$now = strtotime("now");
$diff = $now - $regtime;
$hours = $diff / 60 / 60;
if (!isset($user->user_login) || !$this->is_ajax()) {
return $redirect_to;
}
if ($this->is_plugin_active('peters-login-redirect/wplogin_redirect.php')&& function_exists('redirect_to_front_page')) {
$redirect_to = redirect_to_front_page($redirect_to, $req_redirect_to, $user);
}
if( $hours < 48 ){
$redirect_to = "/somepage/"; // it's been less than 48 hours, redirect to message.
}
echo "<div id='simplemodal-login-redirect'>$redirect_to</div>";
exit();
}
Maintenant, je dois juste déterminer comment forcer un modèle contextuel lorsqu'un utilisateur atteint une certaine page.
voici un exemple qui connecte login_redirect et vérifie la création de son compte, puis les redirige vers une URL de votre choix si celle-ci a été inférieure à 48 heures:
function my_redirect( $to, $requested, $user ){
if( !isset( $user->user_login ) ){ // we only want this to run when credentials have been supplied
return $to;
}
$regtime = strtotime($user->user_registered);
$now = strtotime("now");
$diff = $now - $regtime;
$hours = $diff / 60 / 60;
if( $hours < 48 ){
return "/somepage/"; // it's been less than 48 hours, redirect to message.
} else {
return admin_url();
}
}
add_filter('login_redirect', 'my_redirect', 10, 3);
Vous pouvez utiliser le plugin log-user-access pour enregistrer tous les accès utilisateur.
Ensuite, sélectionnez la rangée supérieure de chaque "login_id" de la table de plug-in, triée par date et heure. Ce sera la première connexion de l'utilisateur. Avec ces données, vous devriez pouvoir comprendre le reste.