このページの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
)がリロードされます。
リダイレクトのための機能を修正するための提案はありますか?
あなたのページに表示されるログインリンクだけを心配しているなら、 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 );
}
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(); } ?>
私は実際にすでにこれを既に行っているオープンソースのプラグインを持っています。
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は書き換えのために完全にうまく働きます。楽しい :)