WordPress: Luo sivumalli, joka edellyttää käyttäjän rekisteröitymistä ja sisäänkirjautumista
Olimme viimeistelemässä mukautetun teeman käyttöönottoa asiakassivustolla, ja he pyysivät rakentamaan jonkinlaista vuorovaikutusta, jossa osa sivuista oli rajoitettu rekisteröityneille tilaajille. WordPress tarjoaa sivuille näkyvyysasetuksia, mutta se ei sovi tähän skenaarioon.
- yksityinen – Jos näkyvyys valitaan yksityiseksi, vain järjestelmänvalvojat ja toimittajat voivat tarkastella sisältöä.
- Salasanasuojattu – edellyttää yksilöllisen koodin käyttämistä jokaiselle sivulle sisällön katsomiseksi.
Aluksi ajattelimme ottaa käyttöön kolmannen osapuolen laajennuksia, mutta ratkaisu oli yksinkertainen. Voisimme luoda ainutlaatuisen mallin, joka edellyttää katsojien rekisteröitymistä ja sisäänkirjautumista nähdäkseen sivun.
WordPress-malli: vain tilaajille
Ensin kopioimme asiakkaamme sivumallin (page.php
) sisällä lapsi teema. Mallin luomiseksi sinun on lisättävä koodi sivusi yläosaan:
<?php /* Template Name: Subscribers Only */ ?>
Etsi seuraavaksi sivusi koodista rivi, joka näyttää sisällön. Sen pitäisi näyttää tältä:
<?php the_content(); ?>
Nyt sinun on käärittävä koodi tämän rivin ympärille:
<?php
$redirect_url = get_permalink(); // Get the current page's URL
if (is_user_logged_in()) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Subscriber Only</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Tässä on koodin selitys luettelomerkeissä:
$redirect_url = get_permalink();
: Tämä rivi hakee nykyisen sivun URL-osoitteen ja tallentaa sen muuttujaan$redirect_url
.if (is_user_logged_in()) :
: Tämä ehdollinen lauseke tarkistaa, onko käyttäjä jo kirjautunut sisään.- Jos käyttäjä on kirjautunut sisään, tässä lohkossa oleva koodi suoritetaan.
<h2><?php the_title(); ?></h2>
: Tämä näyttää nykyisen sivun otsikon.<?php the_content(); ?>
: Tämä näyttää nykyisen sivun sisällön.
- Jos käyttäjä ei ole kirjautunut sisään, koodi sisällä
else
lohko suoritetaan.<h2>Subscriber Only</h2>
: Tämä näyttää otsikon, joka osoittaa, että sisältö on rajoitettu.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Tämä näyttää viestin, joka selittää, että sisältö on rajoitettu tiettyihin rooleihin, ja sisältää "Kirjaudu" -linkin. Linkinhref
attribuutti asetetaan käyttäjän luomaan kirjautumis-URL-osoitteeseenwp_login_url($redirect_url)
, varmistaen, että käyttäjät ohjataan takaisin nykyiselle sivulle sisäänkirjautumisen jälkeen.
Tämä koodi tarkistaa tehokkaasti, onko käyttäjä kirjautunut sisään, ja jos ei, rohkaisee häntä kirjautumaan sisään päästäkseen rajoitettuun sisältöön linkin avulla, joka ohjaa hänet takaisin sivulle, jota he yrittivät tarkastella.
Näytä tietyn käyttäjäroolin mukaan
Voit myös rajoittaa sisällön tiettyihin käyttäjärooleihin, jos haluat:
<?php
$allowed_roles = array('subscriber', 'editor', 'author'); // Add the roles you want to allow
$user = wp_get_current_user();
$redirect_url = get_permalink();
if (array_intersect($allowed_roles, $user->roles)) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Restricted Access</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles.
<a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Tässä on koodin selitys luettelomerkeissä:
$allowed_roles = array('subscriber', 'editor', 'author');
: Tämä rivi luo joukon sallittuja rooleja, jotka määrittelevät, mitkä käyttäjäroolit saavat käyttää sisältöä. Voit mukauttaa tätä taulukkoa sisällyttämään siihen roolit, jotka haluat sallia.$user = wp_get_current_user();
: Tämä koodi hakee tiedot nykyisestä käyttäjästä, mukaan lukien hänen roolinsa.$redirect_url = get_permalink();
: Tämä rivi tallentaa nykyisen sivun URL-osoitteen$redirect_url
muuttuja, jota käytetään ohjaamaan käyttäjä takaisin nykyiselle sivulle sisäänkirjautumisen jälkeen.if (array_intersect($allowed_roles, $user->roles)) :
: Tämä ehdollinen lauseke tarkistaa, risteävätkö käyttäjän roolit kohdassa lueteltujen roolien kanssa$allowed_roles
joukko. Toisin sanoen se tarkistaa, onko käyttäjällä jokin sallituista rooleista.- Jos käyttäjällä on jokin sallituista rooleista, tämän lohkon koodi suoritetaan.
<h2><?php the_title(); ?></h2>
: Tämä näyttää nykyisen sivun otsikon.<?php the_content(); ?>
: Tämä näyttää nykyisen sivun sisällön.
- Jos käyttäjällä ei ole yhtä sallituista rooleista, koodi sisällä
else
lohko suoritetaan.<h2>Restricted Access</h2>
: Tämä näyttää otsikon, joka osoittaa, että sisältö on rajoitettu.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Tämä näyttää viestin, joka selittää, että sisältö on rajoitettu tiettyihin rooleihin, ja sisältää "Kirjaudu" -linkin. Linkinhref
attribuutti asetetaan käyttäjän luomaan kirjautumis-URL-osoitteeseenwp_login_url($redirect_url)
, varmistaen, että käyttäjät ohjataan takaisin nykyiselle sivulle sisäänkirjautumisen jälkeen.
Tämä koodi rajoittaa tehokkaasti pääsyä tiettyihin rooleihin, ja jos käyttäjällä ei ole yhtäkään sallituista rooleista, se kehottaa häntä kirjautumaan sisään linkillä, joka ohjaa hänet takaisin nykyiselle sivulle sisäänkirjautumisen jälkeen.
Valitse mallisi
Jotta voit käyttää sivua, sinun on valittava Vain tilaajat sivumalli sivusi asetusten lisäosiossa (sivupalkissa). Tämä rajoittaa sivun sisäänkirjautuneisiin lukijoihin tai määrittämiisi rooleihisi.