5件の返信を表示中 - 1 - 5件目 (全5件中)
  • htaccessで制限するのではなくlogin_init アクションでなんとかしてみるのはどうでしょう。

    add_action( 'login_init', function() {
        wp_safe_redirect( home_url() );
    } );

    で試してみたらちゃんと弾いてくれました。

    追記)

    あ、この場合でもそのままだとformからのpostを弾いてしまいますよね。。でも、htaccessよりはいろいろ条件を分岐させて柔軟に対処できそうな気がします。

    例えば、

    add_action( 'login_init', function() {
        $log = filter_input( INPUT_POST, 'log' );
        $pwd = filter_input( INPUT_POST, 'pwd' );
        if ( ! $log || ! $pwd )
            wp_safe_redirect( home_url() );
    } );

    というような感じですかね。

    トピック投稿者 takye54

    (@takye54)

    mimosafa様

    ご連絡ありがとうございます。

    これで行けました!wp-redirectで同じことを試したのですが、その時はpostが弾かれてダメだったのかもしれませんが、 wp_safe_redirectは大丈夫でした。初めて知った関数でした。

    ありがとうございました!

    解決したのであればよかったです。

    これで行けました!wp-redirectで同じことを試したのですが、その時はpostが弾かれてダメだったのかもしれませんが、 wp_safe_redirectは大丈夫でした。初めて知った関数でした。

    postが弾かれる、というのは formaction属性でwp-login.phpが指定されているので、フォームに入力された情報を送るときにリダイレクトされてしまいログインが出来ないのでは… というつもりでした。
    wp_redirectwp_safe_redirectで今回の件について挙動の差異が発生する原因はわからないので何か悶々とします ^^;

    Twenty Fifteen テーマの子テーマ使用で、子テーマのfunctions.phpに下記コードを加えて検証してみました。

    add_action( 'login_init', function() {
    	/**
    	 * $_POST の内容で条件分岐をしない
    	 * wp_redirect
    	 */
    	wp_redirect( home_url() );
    } );
    
    add_action( 'get_sidebar', function() {
    	if ( ! is_user_logged_in() ) {
    		// 以下、ご質問内容にあるコード
    	?>
    <form method="post" action="<?php echo wp_login_url() ?>?redirect_to=<?php echo esc_attr($_SERVER['REQUEST_URI']) ?>">
    	<label for="login_username">ユーザー名:</label>
    		<input type="text" name="log" id="login_username" value="" />
    	<label for="login_password">パスワード:</label>
    	<input type="password" name="pwd" id="login_password" value="" />
    	<input id="user_submit" type="submit" value="ログイン" />
    </form>
    	<?php
    	}
    } );

    上記でおそらく思惑通りの動きをしたんですよね…
    どこか別のところに問題があったのかもしれませんね。

    トピック投稿者 takye54

    (@takye54)

    mimosafa様

    ご連絡ありがとうございます。

    ダメだった時のコードはwp_redirectを使ったのは覚えているんですが、
    正確なのコードを残していないので、うる覚えですが、載せていただいているfunctionのコードでほぼ同じ気がします。

    ちなみに、関係あるかは判りませんが、パスワード変更用にLogin Widget With Shortcodeというプラグインは使っています。

    すみません、Login Widget With Shortcode のコードをちら見してみたのですが、いまいち関連があるかわかりませんでした – -;

    wp_redirectwp_safe_redirectとの挙動の違いが気になっていろいろ調べていたのですが、こちらも判然としません… (wp_redirectからwp_safe_redirectへの修正が必要な例..

    少なくとも私の提示したコードについては(いずれの関数にしても)直後にexit;が入っていませんでしたので修正させて下さいっ

    add_action( 'login_init', function() {
    	wp_safe_redirect( home_url() ); // wp_redirect( home_url() ); でもOK?
    	exit;
    } );

    私もまだまだ勉強中です。
    これからもよろしくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「会員制サイトでwp-login.phpの閲覧制限した時にログインできない」には新たに返信することはできません。