web-dev-qa-db-ja.com

ログインしていないユーザーを特定のページにリダイレクトする方法

特定のページ/ URLを要求しているログに記録されていないユーザーを別のページ/ URLにリダイレクトし、「メンバー限定」のようなメッセージを表示する方法。 !is_user_logged_in()関数を使ってコーディングするのはとても簡単ですが、WordPressの初心者なので、コーディング方法がわかりません。コードも入れるようにファイルに教えてください。

14
user3187719

ここにあなたがそれをあなたの特定の必要性のために働くようにするためにわずかに修正する必要がある2つの例があります。

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' ); 
    exit;
   }
}

これをあなたの子テーマ関数ファイルに入れて、ページIDまたはスラッグとリダイレクトURLを変更してください。

このようなコードを使うこともできます。

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.dev/your-page/', 301 ); 
  exit;
    }
}

メッセージを直接ページに追加することも、ログインしていないすべてのユーザーにメッセージを表示したい場合は コードに追加する とする.

http://codex.wordpress.org/Function_Reference/wp_redirect

28
Brad Dalton

これはより良いでしょう:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users

これがすることはログインページにユーザをリダイレクトすることです。ログインすると、ユーザーは最初にアクセスしようとしていた安全なページにリダイレクトされます。

ドキュメントはこちら:

https://codex.wordpress.org/Function_Reference/auth_redirect

4
Yahya Uddin

何をどこに表示したいのかわからない場合は、どのようにしてどこに配置するのかを教えてもらえますか。投稿全体?ページ?ページのカスタムパーツすみません...私は自分の水晶玉が今日はうまく機能していないと思います。

あなたはそうです、そして私はあなたを引用します:「ワードプレスへの初心者」あなたはむしろ直接答えを求めるよりもむしろ学ぶべきです。

whereは参考文献1のリンクを読むべきです。これにより、どのファイルに入れる必要があるかがわかります。

howはそれをするためにあなたは最初に参照リンク2と3を読むべきです。

全体的には、このように見えるはずです。

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

もちろん上記のコードは loop に入る必要があります。あなたはそれをあなたが望むように複雑にも単純にも構築することができます。たとえば、ログインしていない場合は単純なテキストの代わりに、サインアップフォーム全体を表示したり、(ユーザーはアカウントを持つことができるがサインインを忘れたため)ログインできる分割画面を表示できます。 (彼が持っていない場合).

  1. テンプレート階層
  2. コンディショナルタグ
  3. ループ

以下のコメントの後に追加されました:

headerwp_login_urlと一緒に使用してリダイレクトするには - 再度、以下の参考文献1と2を確認してください。

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

参照:

  1. ヘッダー - PHP
  2. wp_login_url
4
Borek

特定のページにリダイレクトすることはできませんが、ログインしていないすべてのユーザーはログイン画面にリダイレクトされます。

<?php auth_redirect(); ?>

ワードプレスリファレンス: auth_redirect()

別の解決策を言及するだけで。

4
MCG