特定のページの接続時のログインページや、特定のページに移動させる
WordPressで、特定のページ(または投稿またはカテゴリ)にゲストユーザーがアクセスする場合は、ログインページまたは特定のページにリダイレクトする必要がある場合があります。 次の関数を使用すると、特定のページにログインしていないユーザーがアクセスすると、指定されたページに移動します。
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.com/your-page/', 301 ); exit; } } // Source: http://wordpress.stackexchange.com/
is_page('slug')でアクセスを制限するページのslugを指定します。 複数のページを指定する場合 is_page( array( 42, 'about-me', 'Contact' ) )のような形式を使用することができます(ここ を参照)。 ページの代わりにカテゴリー自体(is_category)やカテゴリ内文(カテゴリ内)、個々の記事(is_single)など、様々な形で応用が可能です。
そして上では、特定のページにリダイレクトされるが、ログインページにリダイレクトさせるには、リダイレクトされるURLを wp_login_url( home_url() )に置き換えします。 これにより、非ログインユーザ(ゲストユーザ)は、ログインページに移動することになり、ログイン情報を入力すると、サイトのホームにリダイレクトされます。 ログイン後、現在のページ(直前のページ)にリダイレクトさせるには wp_login_url( get_permalink() )を使用します(wp_login_url を参照)。
ホームページ(前面ページ)接続時に特定のページに一時的にリダイレクトするには、 if ( is_page('slug') && ! is_user_logged_in() ) コードの代わりに次のコードを使用することができます。
if( is_home() || is_front_page() )