web-dev-qa-db-ja.com

ログイン後のリダイレクトWordPress

既存のサイトに基づいてカスタマイズしたWordPressテーマを作成しています。

作成した別のダッシュボードを使用したい。

ログイン後にユーザーを「news.php」ではなく「/wp-admin/」にリダイレクトするにはどうすればよいですか?

-

編集:このための実用的なプラグインを持っていますが、サードパーティのプラグインを使用するよりも安全であるため、functions.phpを介して手動でこれを行う方法を見つけることができる人にはまだ賞金が利用可能です。

46

これで問題が解決するはずです。見つかった答えから適応 こちら

function admin_default_page() {
  return '/new-dashboard-url';
}

add_filter('login_redirect', 'admin_default_page');
80
Travis

受け入れられた答えは非常に間違っています。 WordPress Core。を変更することはできません。特定の更新で編集内容が失われるだけでなく、気まぐれに加えた変更の一部が他の機能を損なったり、サイトのセキュリティを危険にさらす可能性があります。

Action Hooks&Filters はコア内に含まれており、コードを変更せずに機能を変更できます。

login_redirect フィルタを使用して特定のユーザーをリダイレクトする例は、 here であり、much問題に対するより堅牢なソリューション。

特定の問題については、これを行う必要があります。

function login_redirect( $redirect_to, $request, $user ){
    return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
31
Dan

これが役立つ場合があります。 ピーターのログインリダイレクト

ログインおよびログアウトした後、ユーザーを別の場所にリダイレクトします。

特定のユーザー、特定の役割を持つユーザー、特定の機能を持つユーザー、および他のすべてのユーザー用の包括的なルールに対して、一連のリダイレクトルールを定義します。また、登録後のリダイレクトURLを設定します。これはすべて、[設定]> [ログイン/ログアウトリダイレクト]で管理されます。

URLで[variable]username[/variable]構文を使用すると、ログインするたびにシステムが動的URLを作成し、そのテキストをユーザーのユーザー名に置き換えます。ユーザー名に加えて、「userslug」、「homeurl」、「siteurl」、「postid-23」、「http_referer」があり、独自のカスタムURL「変数」を追加することもできます...

12
Vasanthan.R.P
add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}

または、他のユーザーのみをリダイレクトする場合:

add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()&&!current_user_can('level_10')){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}
7
Leo Jiang

Theme My Login プラグインが役立つ場合があります-特定のロールのユーザーを特定のページにリダイレクトできます。

2
gArn

これを試してください、それはWordPressの任意のリダイレクトに動作します

add_filter('woocommerce_login_redirect', 'wc_login_redirect'); 

function wc_login_redirect( $redirect_to ) {

   $redirect_to = 'PUT HERE URL OF THE PAGE';
   return $redirect_to;

}

PHP 5.3以降を使用している場合は、次のような匿名関数を使用できます。

add_filter( 'login_redirect', function() { return site_url('news'); } );
2
Farahmand

受け入れられた答えは明らかに良い答えではありません!それはしばらくの間あなたの問題を解決するかもしれませんが、次にあなたがWordPress=インストールを更新するとき何が起こりますか?あなたのコアファイルは上書きされ、あなたはすべての修正を失います。

他の人(ダンとトラビスの回答)で既に述べたように、正しい答えは login_redirect フィルタ。

0
Mike

カスタマイズされたリンクを次のように使用することもできます。

https://example.com/wp-login.php?redirect_to=https://example.com/news.php
0
Hossein

ログインに成功した後にグローバルにリダイレクトするには、セクションの下のwp-login.phpでこのコードを見つけます。

_   <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">

<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
_

<?php echo esc_attr($redirect_to); ?>をリダイレクト先のURLに置き換えます。 URLはhttp://で始まり、/ other wise page redirect on default locationで終わる必要があります。

同じファイルに登録した後、_<form name="registerform">_セクションの下で同じことをリダイレクトしてください。

0
// add the code to your theme function.php
//for logout redirection
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
//for login redirection
add_action('wp_login','auto_redirect_after_login');
function auto_redirect_after_login(){
wp_redirect( home_url() );
exit();
`enter code here`}
0
Lokesh Metta
// Used theme's functions.php  
add_action('login_form', 'redirect_after_login'); 
function redirect_after_login() 
{     
global $redirect_to; 
if   (!isset($_GET['redirect_to'])) 
{ 
$redirect_to =   get_option('sample-page');
//  sample-page = your page name after site_url
} }
0
Omprakash Patel