質問: ### 前提・実現したいこと WordPressで会員サイトを作成しています。 ログインしていないアクセスは全て、 ログインページへリダイレクトするようにしたいのですが、 どうにもうまくいきません。 (会員登録ページを除く) ### 試したこと ログインしていないアクセスは ログインページへリダイレクトするように指定しました。 functions.phpにコードを追加して実行しました。 以下、そのコードです。 ### 該当のソースコード ``` // ログインしていないとログインページへリダイレクト function require_login() { if ( ! is_user_logged_in() && ! preg_match( '/^(wp-login\.php|async-upload\.php)/', basename( $_SERVER['REQUEST_URI'] ) ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { wp_redirect('http://aaa.com/wp-login.php'); } } add_action( 'init', 'require_login' ); ``` しかし、これだと、 会員登録ページまでもがリダイレクトされるようになってしました。 解決策を探していたところ、 「特定ページのみリダイレクトを無効にする方法」がありましたが、 htaccessにコードを追加してもうまくいきません。 htaccessよりも出来ればわかりやすいfunctions.phpを編集して、 会員登録ページ以外をリダイレクトするようにしたいです。 解決策があればご教示ください。 よろしくお願いします。
回答: 完全に会員専用ということであれば「Subway」などのプラグインで未ログインの訪問者に対して絶対にログインフォームを出すという方法で解決できるかと思います。 ショートコードでログイン画面を表示するので、ログイン画面以外のものもそのページに表示することができます(記事のタイトル一覧、「登録はこちら・・・」みたいなリンクなど) また特定ページだけを許可・拒否、拒否されたらどこかのページへリダイレクトということであれば「WP Private Content Plus」などがいいかもしれません