このコードは、ユーザーが最初にログインしたかどうか、つまり登録後に確認します。私は彼をカスタムページにリダイレクトしたいと思います。それ以外の場合は、彼をホームページや管理ページにリダイレクトします。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回目のクリックで。資格情報を入力 - >ログイン - >間違ったページ - >戻るボタン - >資格情報を再度入力 - >ログイン - >(正しいページ)奇妙な。
は、それを試してみました動作しませんでした。それはまだフォームなしで私を../wp-login.phpにリダイレクトします。フィルタの問題は、パーサーが 'if'ブロックに入り込まないことです。なぜなら、もし 'if'ブロックを削除し、それを' return admin_url() 'ステートメントに置き換えれば、うまく動作するからです。 – Joann
関数に渡される '$ user'変数、つまりグローバル' $ user_ID'ではなく '$ user-> ID'を使うべきです。 – TheDeadMedic
それはうまくいった!しかし、wordpressはこの 'elseif(current_user_can( 'manage_options')){return admin_url();}'を認識していないようです。何か案が?どうもありがとう!!! – Joann