WordPress: Lag en sidemal som krever at en bruker er registrert og pålogget
Vi var ferdig med å implementere et tilpasset tema på en kundeside, og de ba om at vi skulle bygge en slags interaksjon der noen av sidene var begrenset til registrerte abonnenter. WordPress tilbyr synlighetsalternativer for sider, men det passer ikke dette scenariet.
- Privat – Hvis du velger synlighet som privat, kan administratorer og redaktører bare se innholdet.
- Passordbeskyttet – krever at en unik kode brukes for hver side for å se innholdet.
Først tenkte vi på å implementere tredjeparts plugins, men løsningen var enkel. Vi kan lage en unik mal som krever at seerne registrerer seg og logger på for å se siden.
WordPress-mal: Kun abonnenter
Først kopierte vi kundens sidemal (page.php
) innen barn tema. For å lage en mal, må du legge til litt kode øverst på siden din:
<?php /* Template Name: Subscribers Only */ ?>
Deretter ser du etter linjen i sidens kode som viser innholdet. Det skal se slik ut:
<?php the_content(); ?>
Nå må du pakke litt kode rundt den linjen:
<?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; ?>
Her er en forklaring av koden i punkttegn:
$redirect_url = get_permalink();
: Denne linjen henter URL-en til gjeldende side og lagrer den i variabelen$redirect_url
.if (is_user_logged_in()) :
: Denne betingede erklæringen sjekker om en bruker allerede er pålogget.- Hvis brukeren er pålogget, blir koden innenfor denne blokken utført.
<h2><?php the_title(); ?></h2>
: Dette viser tittelen på gjeldende side.<?php the_content(); ?>
: Dette viser innholdet på gjeldende side.
- Hvis brukeren ikke er logget inn, vil koden i
else
blokken er utført.<h2>Subscriber Only</h2>
: Dette viser en overskrift som indikerer at innholdet er begrenset.<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>
: Dette viser en melding som forklarer at innholdet er begrenset til bestemte roller og gir en "Logg inn"-kobling. Linken erhref
attributtet er satt til påloggings-URLen generert avwp_login_url($redirect_url)
, og sikrer at brukere blir omdirigert tilbake til gjeldende side etter pålogging.
Denne koden sjekker effektivt om en bruker er pålogget, og hvis ikke, oppfordrer den dem til å logge på for å få tilgang til det begrensede innholdet, med en lenke som leder dem tilbake til siden de prøvde å se.
Vis etter spesifikk brukerrolle
Du kan også begrense innholdet til bestemte brukerroller hvis du vil:
<?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; ?>
Her er en forklaring av koden i punkttegn:
$allowed_roles = array('subscriber', 'editor', 'author');
: Denne linjen oppretter en rekke tillatte roller, og spesifiserer hvilke brukerroller som har tilgang til innholdet. Du kan tilpasse denne matrisen til å inkludere rollene du vil tillate.$user = wp_get_current_user();
: Denne koden henter informasjon om gjeldende bruker, inkludert rollene deres.$redirect_url = get_permalink();
: Denne linjen lagrer gjeldende sides URL i$redirect_url
variabel, som vil bli brukt til å omdirigere brukeren tilbake til gjeldende side etter at de har logget på.if (array_intersect($allowed_roles, $user->roles)) :
: Denne betingede setningen sjekker om brukerens roller krysser rollene som er oppført i$allowed_roles
array. Den sjekker med andre ord om brukeren har en av de tillatte rollene.- Hvis brukeren har en av de tillatte rollene, kjøres koden i denne blokken.
<h2><?php the_title(); ?></h2>
: Dette viser tittelen på gjeldende side.<?php the_content(); ?>
: Dette viser innholdet på gjeldende side.
- Hvis brukeren ikke har en av de tillatte rollene, vil koden i
else
blokken er utført.<h2>Restricted Access</h2>
: Dette viser en overskrift som indikerer at innholdet er begrenset.<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>
: Dette viser en melding som forklarer at innholdet er begrenset til bestemte roller og gir en "Logg inn"-kobling. Linken erhref
attributtet er satt til påloggings-URLen generert avwp_login_url($redirect_url)
, og sikrer at brukere blir omdirigert tilbake til gjeldende side etter pålogging.
Denne koden begrenser effektivt tilgang til spesifikke roller, og hvis en bruker ikke har en av de tillatte rollene, ber den dem om å logge på med en lenke som vil omdirigere dem tilbake til gjeldende side etter pålogging.
Velg malen din
For å bruke siden, må du velge Bare abonnenter sidemal i den avanserte delen av sidens alternativer (på sidefeltet). Dette vil begrense siden til påloggede lesere eller dine definerte roller.