web-dev-qa-db-ja.com

登録ユーザーにのみ表示されるWebサイト

非登録ユーザーのアクセスを無効にするにはどうすればいいですか?ユーザーがログインしていない場合は、カスタム登録/ログインページにリダイレクトします。私はプラグインを使用したくないので、これは以下のコードを使用してこれは可能ですか?.

<?php
if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    echo 'Welcome, visitor!';
}
?>

ありがとう。

4
FlourishDNA

これをプラグインに書いてください。

add_action( 'template_redirect', 'auth_redirect' );

GitHubの プラグインとして

これにより、すべての訪問者がまだログインしていない場合は、ログインが強制されます。

場合によっては、これはログイン毎回を要求しています。これはうまくいくかもしれません:

is_admin() || add_action( 'template_redirect', function() {
    if ( ! is_user_logged_in() )
        auth_redirect();
});

代わりに404ステータスを送信したい場合は、auth_redirect()を次のように置き換えることができます。

wp_die( 'Nope.', 'Not found', [ 'response' => 404 ] );
10
fuxia

コードを変更したくない場合は、代わりにこのプラグインを使用できます。 制限付きサイトアクセス 。それは非常に評価されていて、私の個人的な経験では、それは本当にうまくいきます。

自分のサイトへのアクセスを、ログインしている訪問者、または一連の指定されたIPアドレスからそのサイトにアクセスしている訪問者に制限します。制限付きの訪問者をログインページに送信するか、それらをリダイレクトするか、メッセージまたはページを表示します。エクストラネット、公にホストされているイントラネット、または並行開発/ステージングサイトに最適なソリューション。

3
Anthony

私は答えをCSSで簡単にしました。

  1. main div(.lor1)は、divの後にヘッダーが始まり、フッターの前に密集していることを意味します。
  2. このメインクラスの表示をログに記録するときに、メインdivに新しいクラス(.lor1.kun)を追加します。
  3. 新しいHTMLを作る混乱を記録する最初のものを表示します(.lor1.user_not_login)

このコードをheader.phpに追加

 <?php     
if (!is_user_logged_in()) {
?> 
<style>
.lor1{ display:none;}
.lor1.kun{ display: block;}
.lor1.user_not_login{ display: block;}
</style>
<?php }  ?>
0
krunal sojitra

このコードを親のテーマfunction.phpファイルのあなたの子供のテーマに追加してください

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('home') && ! is_user_logged_in() ) {

wp_redirect( 'https://example.com/login', 301 ); 
  exit;
    }
}

"home"をページスラッグ名に置き換えてください。つまり、これはユーザーがログインせずにアクセスしたくないページで、このURL " https://example.com/login "をリンク先に置き換えます。ユーザーがログインしていない場合にユーザーをリダイレクトする場所のURL。つまり、このURLはログインページまたは登録ページに移動する必要があります。

0
Prajwal Nayak

まあ、あなたのコードは実際には機能的です。あなたはただ正しい場所で正しいモジュールを呼ぶ必要があります。

if( !is_user_logged_in() ){
    // show_registration_panel() 
} else {
   // He is a registered user. Proceed as usual
}
0
CarlosOnWeb

この関数をあなたのfunctions.phpファイルに追加してください。

ログインページにリダイレクトするために、ユーザーがホームページ(ページID == 2)にログインアクセスしていない場合。

<?php
add_action('template_redirect','wpse64899_check_if_logged_in');
function wpse64899_check_if_logged_in()
{
    $pageid = 2; // or whatever you want it to be
    if(!is_user_logged_in() && is_page($pageid))
    {
        $url = add_query_arg(
            'redirect_to',
            get_permalink($pageid),
            site_url('wp-login.php')
        );
        wp_redirect($url);
        exit;
    }
} ?>
0
ravi patel

あなたはおそらくあなたのfunctions.phpに次のものを入れる必要があるでしょう。

if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    wp_redirect(site_url('/wp-login.php?action=register'));
    exit();
}
0
Mike Madern