web-dev-qa-db-fra.com

Site Web visible uniquement pour les utilisateurs enregistrés

Comment puis-je désactiver l'accès aux utilisateurs non enregistrés? Si l'utilisateur n'est pas connecté, je souhaite le rediriger vers une page d'inscription/connexion personnalisée. Est-ce possible d'utiliser le code ci-dessous, car je ne veux pas utiliser de plugin.

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

Merci.

4
FlourishDNA

Écrivez ceci dans un plugin:

add_action( 'template_redirect', 'auth_redirect' );

Comme plugin sur GitHub .

Cela forcera tous les visiteurs à se connecter s’ils ne le sont pas déjà.

Dans certains cas, cela demande un identifiant de connexion à chaque fois . Cela pourrait mieux fonctionner:

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

Si vous souhaitez envoyer un statut 404 à la place, vous pouvez remplacer la auth_redirect() par:

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

Si vous ne souhaitez pas modifier votre code, vous pouvez utiliser ce plugin à la place: Accès restreint au site . C'est très bien noté et, d'après mon expérience personnelle, cela fonctionne vraiment bien.

Limitez l'accès de votre site aux visiteurs connectés ou accédant au site à partir d'un ensemble d'adresses IP spécifiées. Envoyez des visiteurs restreints à la page de connexion, redirigez-les ou affichez un message ou une page. Une excellente solution pour les extranets, les intranets hébergés publiquement ou les sites de développement/transfert en parallèle.

3
Anthony

J'ai la réponse c'est facile par css ..

  1. div principal (.lor1) signifie comman div start after header et finesh before footer
  2. Ajouter une nouvelle classe (.lor1.kun) dans la division principale lors de la connexion de cette classe principale display: block;
  3. faire de nouveaux HTML Ex. afficher la liste des désordres depuis le début (.lor1.user_not_login)

AJOUTEZ ce code dans 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

Ajoutez ce code dans le fichier function.php du thème themes of de votre enfant.

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;
    }
}

Veuillez remplacer "home" par le nom du slug de la page, c’est-à-dire la page à laquelle vous ne voulez pas que vos utilisateurs accèdent sans vous connecter et remplacez cette URL " https://example.com/login " par la destination. URL où vous souhaitez rediriger vos utilisateurs s'ils ne sont pas connectés, c'est-à-dire que cette URL doit être dirigée vers votre page de connexion ou d'inscription.

0
Prajwal Nayak

Eh bien, votre code est réellement fonctionnel. Il vous suffit d'appeler les bons modules aux bons endroits.

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

Ajoutez cette fonction à votre fichier functions.php.

lorsque l'utilisateur ne se connecte pas, accédez à la page d'accueil (id de la page == 2) pour rediriger la page de connexion.

<?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

Vous devez probablement simplement mettre les éléments suivants dans votre 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