web-dev-qa-db-ja.com

wp-login.phpを別のページにリダイレクトをする

このページのwp-login.php/loginページにリダイレクトします。したがって、ユーザーがこの<a href="/wp-login.php">login</a>のようなリンクをクリックすると、wordpressは彼を/registerにリダイレクトします。

この関数を見つけて修正しました。

add_action('init','custom_login');

function custom_login(){
 global $pagenow;
 if (( 'wp-login.php' == $pagenow ) && (!is_user_logged_in())) {
  wp_redirect('/login');
  exit();
 }

ワードプレスのコーディングは苦手です。

リダイレクトはうまくいきますが、認証は壊れているようです。 login/passを入力すると、認証されずに同じページ(/login)がリロードされます。

リダイレクトのための機能を修正するための提案はありますか?

3
4m1nh4j1

あなたのページに表示されるログインリンクだけを心配しているなら、 login_url フィルタをフックすることによってURLを修正することができるはずです。これはhttp://MYSITE/wp-login.phpを直接入力するユーザーを自分のブラウザにリダイレクトしませんが、サイト全体に表示されるログインリンクに影響するはずです。

これは login_url Codexページ :のコード例です。

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
  return home_url( '/my-login-page/?redirect_to=' . $redirect );
}
2
thirdender

1. .htaccessファイルを変更します - index.php書き換え規則の後にこの行を追加します。

RewriteRule ^index\.php$ – [L]<br />
RewriteRule ^yoursecretpath$ wp-login.php [L,NC,QSA]

yoursecretpathは管理者パネルへのパスです。

2. login_headerファイルのwp-login.php関数を変更します - このコードは59行目の直前に追加します(HTML doc typeタグの開始位置、ヘッダー送信エラーを防ぐため)。

<?php $uri = $_SERVER['REQUEST_URI']; if(stripos($uri, ‘wp-login’) or stripos($uri, ‘wp-admin’) && !stripos($GLOBALS["HTTP_COOKIE"], ‘wordpress_logged_in’)) {  header("Location: ".get_site_url().'/yoursecretpath' ); exit(); } ?>
0
SoftProdigy

私は実際にすでにこれを既に行っているオープンソースのプラグインを持っています。

https://github.com/tripflex/wp-login-flow

ユーザーに自分のEメールの確認を要求するために作成されましたが、その機能を無効にして、WordPressレポ(1.0.0)の最新バージョンで機能する書き換え機能を使用することができます。

あなたは私が書き換えを処理する方法を見るためにコードを見ることができます:

https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312

私は実際にいくつかのメジャーアップデートとパッチを手に入れるためにこれに取り組んでいます、しかし今のところ1.0.0は書き換えのために完全にうまく働きます。楽しい :)

0
sMyles