2010-11-24 18 views
6

このコードは、ユーザーが最初にログインしたかどうか、つまり登録後に確認します。私は彼をカスタムページにリダイレクトしたいと思います。それ以外の場合は、彼をホームページや管理ページにリダイレクトします。wordpressで最初にログインした後にユーザーをリダイレクトしますか?

function mylogin_redirect() { 
    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)) { 
      header("Location: http://example.com/custompage"); 
     } elseif(current_user_can('manage_options')) { 
      header("Location: http://example.com/wp-admin/"); 
     } else { 
      header("Location: http://example.com/"); 
     } 
    } 
} 
add_action('wp_head', 'mylogin_redirect'); 

しかし、動作しませんか?空白に代わり

function mylogin_redirect($redirect_to, $url_redirect_to = '', $user = null) { 
    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)) { 
      return get_bloginfo('url') . "/custompage/"; 
     } elseif(current_user_can('manage_options')) { 
      return admin_url(); 
     } else { 
      return get_bloginfo('url'); 
     } 
    } 
} 
add_filter('login_redirect', 'mylogin_redirect'); 

それは私にログインするものの、それはどこでも私を得ることはありませんが、http://example.com/wp-login.phpへ:私の推測では、私はlogin_redirectフィルタを使用して、以下を試してみました...それはwp_headにフックされません ですページ。

更新: いいえ、私は何が起こっているのか分かりません。フィルターフックを使用して、2回目のログイン後にのみ目的の宛先にアクセスできます。 2回目のログインではなく、ログインボタンの2回目のクリックで。資格情報を入力 - >ログイン - >間違ったページ - >戻るボタン - >資格情報を再度入力 - >ログイン - >(正しいページ)奇妙な。

答えて

4

フィルタコールを調整する必要があります。

// filter name, callback, priority, accepted args 
add_filter('login_redirect', 'mylogin_redirect', 10, 3); 
+0

は、それを試してみました動作しませんでした。それはまだフォームなしで私を../wp-login.phpにリダイレクトします。フィルタの問題は、パーサーが 'if'ブロックに入り込まないことです。なぜなら、もし 'if'ブロックを削除し、それを' return admin_url() 'ステートメントに置き換えれば、うまく動作するからです。 – Joann

+0

関数に渡される '$ user'変数、つまりグローバル' $ user_ID'ではなく '$ user-> ID'を使うべきです。 – TheDeadMedic

+0

それはうまくいった!しかし、wordpressはこの 'elseif(current_user_can( 'manage_options')){return admin_url();}'を認識していないようです。何か案が?どうもありがとう!!! – Joann

関連する問題