首次登录时重定向或显示消息

时间:2011-07-26 作者:Zach Shallbetter

我一直在尝试破译一种在第一次登录时向用户显示消息的方法,但似乎无法使其正常工作。我不确定我错过了什么,或者我是否还有其他事情需要做。任何帮助都将不胜感激。我觉得我错过了什么。

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>\';
    }
}
或者,如果我能找到一种方法来确定用户创建以来已经有多少天了,我可以做类似的事情。也许通过添加到用户元表?

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\');
然后要求

if first_login(date, time) == (today, ago) {
#do something
}
Update:米洛的代码工作得很好。然而,我需要它来处理Eric Meyer的简单模式登录。我在SimpleModel登录中找到了这个函数。php和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();
    }
并将Milo的重定向添加到它,如下所示:

    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();
    }
现在我只需要确定当用户到达某个页面时如何强制弹出模型。

3 个回复
最合适的回答,由SO网友:Milo 整理而成

下面是一个钩住login\\u redirect并检查其帐户创建时间的示例,如果少于48小时,则将其重定向到您选择的url:

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);

SO网友:Sean Lee

您可以使用log-user-access 用于记录所有用户访问的插件。

然后,从插件表中按日期和时间排序的每个“login\\u id”中选择第一行。这将是用户首次登录。有了这些数据,您应该能够找出其余的。

SO网友:wordpress developer
/*
this is an redirect action
*/
function BB_ECC_login_redirect_code( $redirect_to, $request, $user  ) {

    $user_login_time = get_user_meta( $user->id , \'user_login_time\' , true );
    if( $user_login_time <= 1 ){
        $new_url = bp_core_get_user_domain( $user->id )."profile/";
        $user_login_time++;
        update_user_meta($user->id, \'user_login_time\', $user_login_time );
    }else{
        $new_url = bp_core_get_user_domain( $user->id )."dashboard/";
    }

    return ( is_array( $user->roles ) && in_array( \'administrator\', $user->roles ) ) ? admin_url() : $new_url;
} 
add_filter( \'login_redirect\', \'BB_ECC_login_redirect_code\', 10, 3 );


function BB_ECC_add_meta_value_for_login_checking( $user_id ) {
    update_user_meta($user_id, \'user_login_time\', 1 );
}
add_action( \'user_register\', \'BB_ECC_add_meta_value_for_login_checking\', 10, 1 );
结束

相关推荐

无法访问wp-login.php时如何登录?

我在家里的virtbox服务器上安装了一个自托管wordpress<我在试wordpress的插件。在启用了一些安全插件之后,我发现我无法访问wp登录名。php页面<我得到一个插件的功能,告诉我这个网站是被禁止的,不存在<问题是,我不确定是哪个插件做的我在页面的前端也没有登录链接我安装的插件有防弹安全、锁定wp admin、终极安全检查器和wp安全扫描安装在没有GUI的ubuntu服务器上,主机是mac osx,但我可以从网络访问它<如果我只是从wordpress目录中删除插件,那