web-dev-qa-db-ja.com

初回ログイン時にメッセージをリダイレクトまたは表示する

私は最初のログイン時にユーザーにメッセージを表示する方法を解読しようとしていましたが、それがうまく動かないようです。足りないものがあるのか​​、他に何かする必要があるのか​​どうかわかりません。任意の助けがいただければ幸いです。私はここに何かが足りない気がします。

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
}

更新:Miloのコードはうまくいった。しかし、私はEric MeyerのSimple Modal Loginと連携するためにそれが必要でした。私はsimplemodal-login.phpとピーターのログインリダイレクトの中にこの関数を見つけました。

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

今私はちょうどユーザーが特定のページに到達したときにモデルポップアップを強制する方法を決定する必要があります。

1

これは、login_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);
4
Milo

あなたはすべてのユーザーアクセスを記録するために log-user-access プラグインを使うことができます。

次に、日付と時刻でソートされたプラグインテーブルの各 "login_id"から一番上の行を選択します。それがユーザーの最初のログインになります。このデータがあれば、残りの部分を理解できるはずです。

0
Sean Lee