特定のページ/ URLを要求しているログに記録されていないユーザーを別のページ/ URLにリダイレクトし、「メンバーのみ」のようなメッセージを表示する方法。!is_user_logged_in()関数を使用してコーディングするのは非常に簡単ですが、WordPressの初心者であるため、コーディング方法がわかりません。コードを入れるファイルも教えてください。
特定のページ/ URLを要求しているログに記録されていないユーザーを別のページ/ URLにリダイレクトし、「メンバーのみ」のようなメッセージを表示する方法。!is_user_logged_in()関数を使用してコーディングするのは非常に簡単ですが、WordPressの初心者であるため、コーディング方法がわかりません。コードを入れるファイルも教えてください。
回答:
特定のニーズに合わせて少し変更する必要がある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;
}
}
メッセージをページに直接追加するか、ログインしていないすべてのユーザーのメッセージを表示する場合は、コードに追加します。
これは良いでしょう:
if ( !is_user_logged_in() ) {
auth_redirect();
}
// continue as normal for authenticated users
これにより、ユーザーがログインページにリダイレクトされます。ログインすると、ユーザーは最初にアクセスしようとしていた安全なページにリダイレクトされます。
ここにドキュメント:
https://codex.wordpress.org/Function_Reference/auth_redirect
何をどこに表示するかを指定しなかった場合、どのように配置するかをどのように伝えることができますか?投稿全体?ページ?ページのカスタム部分?申し訳ありません...私の水晶玉は今日はあまり機能していません。
あなたがいるので、私はあなたを引用します:「ワードプレスの初心者」は、直接答えを求めるよりもむしろ学ぶべきです。
どこ参考文献1のリンクで読むべきかについて。これにより、どのファイルを配置する必要があるかがわかります。
どのようには、最初に参照リンク2および3を読む必要があります。
全体的には次のようになります。
if ( is_user_logged_in() ) {
the_content();
} else {
echo 'For members only';
}
もちろん、上記のコードはループに入る必要があります。必要に応じて、複雑または単純に構築できます。たとえば、ログインしていない場合は、単純なテキストの代わりに、サインアップフォーム全体を表示できます。または-私が提案するように、ユーザーがログインできる(ユーザーはアカウントを持っているがサインインを忘れたため)分割画面(彼が持っていない場合)。
以下のコメントの後に追加:
-を使用header
してwp_login_url
再度リダイレクトするには、以下の参照1と2を確認してください。
if ( is_user_logged_in() ) {
the_content();
} else {
header('Location: ' . wp_login_url());
}
参照:
$pagenow
?あなたは大砲でハエを殺そうとしていますが、それがうまくいくと確信していますが、なぜそんなに複雑ですか?複雑にしないでおく。PS2:PHPとWP Codexを学んでください。
特定のページにリダイレクトすることはできませんが、ログインしていないユーザーはすべてログイン画面にリダイレクトされます。
<?php auth_redirect(); ?>
Wordpressリファレンス: auth_redirect()
別のソリューションに言及するだけです。
add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }
しかし、その動作していない