WordPress: Opret en sideskabelon, der kræver, at en bruger er registreret og logget ind
Vi var ved at færdiggøre implementeringen af et tilpasset tema på et kundewebsted, og de anmodede om, at vi opbyggede en form for interaktion, hvor nogle af siderne var begrænset til registrerede abonnenter. WordPress tilbyder muligheder for synlighed for sider, men det imødekommer ikke dette scenario.
- Privat – Valg af synlighed som privat giver kun administratorer og redaktører mulighed for at se indholdet.
- Adgangskodebeskyttet – kræver, at der anvendes en unik kode for hver side for at se indholdet.
Først tænkte vi på at implementere tredjeparts plugins, men løsningen var enkel. Vi kunne oprette en unik skabelon, der kræver, at seerne registrerer sig og logger ind for at se siden.
WordPress-skabelon: Kun abonnenter
Først kopierede vi vores kundes sideskabelon (page.php
) indenfor barn tema. For at oprette en skabelon skal du tilføje noget kode øverst på din side:
<?php /* Template Name: Subscribers Only */ ?>
Kig derefter efter linjen i din sides kode, der viser indholdet. Det skal se sådan ud:
<?php the_content(); ?>
Nu skal du pakke nogle koder rundt om den linje:
<?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 af koden i punktopstillinger:
$redirect_url = get_permalink();
: Denne linje henter URL'en på den aktuelle side og gemmer den i variablen$redirect_url
.if (is_user_logged_in()) :
: Denne betingede erklæring kontrollerer, om en bruger allerede er logget ind.- Hvis brugeren er logget ind, udføres koden i denne blok.
<h2><?php the_title(); ?></h2>
: Dette viser titlen på den aktuelle side.<?php the_content(); ?>
: Dette viser indholdet af den aktuelle side.
- Hvis brugeren ikke er logget ind, vil koden inden for
else
blok udføres.<h2>Subscriber Only</h2>
: Dette viser en overskrift, der angiver, at indholdet er begrænset.<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 meddelelse, der forklarer, at indholdet er begrænset til bestemte roller og giver et "Log ind"-link. Linketshref
attribut er indstillet til den login-URL, der genereres afwp_login_url($redirect_url)
, hvilket sikrer, at brugere omdirigeres tilbage til den aktuelle side efter at have logget ind.
Denne kode kontrollerer effektivt, om en bruger er logget ind, og hvis ikke, opfordrer den dem til at logge ind for at få adgang til det begrænsede indhold med et link, der leder dem tilbage til den side, de forsøgte at se.
Vis efter specifik brugerrolle
Du kan også begrænse indholdet til specifikke brugerroller, hvis du ønsker:
<?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 af koden i punktopstillinger:
$allowed_roles = array('subscriber', 'editor', 'author');
: Denne linje opretter en række tilladte roller, der angiver, hvilke brugerroller der har tilladelse til at få adgang til indholdet. Du kan tilpasse dette array til at inkludere de roller, du vil tillade.$user = wp_get_current_user();
: Denne kode henter information om den aktuelle bruger, inklusive deres roller.$redirect_url = get_permalink();
: Denne linje gemmer den aktuelle sides URL i$redirect_url
variabel, som vil blive brugt til at omdirigere brugeren tilbage til den aktuelle side, efter at vedkommende har logget ind.if (array_intersect($allowed_roles, $user->roles)) :
: Denne betingede erklæring kontrollerer, om brugerens roller krydser de roller, der er angivet i$allowed_roles
array. Med andre ord tjekker den, om brugeren har en af de tilladte roller.- Hvis brugeren har en af de tilladte roller, udføres koden i denne blok.
<h2><?php the_title(); ?></h2>
: Dette viser titlen på den aktuelle side.<?php the_content(); ?>
: Dette viser indholdet af den aktuelle side.
- Hvis brugeren ikke har en af de tilladte roller, vil koden i
else
blok udføres.<h2>Restricted Access</h2>
: Dette viser en overskrift, der angiver, at indholdet er begrænset.<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 meddelelse, der forklarer, at indholdet er begrænset til bestemte roller og giver et "Log ind"-link. Linketshref
attribut er indstillet til den login-URL, der genereres afwp_login_url($redirect_url)
, hvilket sikrer, at brugere omdirigeres tilbage til den aktuelle side efter at have logget ind.
Denne kode begrænser effektivt adgangen til specifikke roller, og hvis en bruger ikke har en af de tilladte roller, beder den dem om at logge ind med et link, der omdirigerer dem tilbage til den aktuelle side efter at have logget ind.
Vælg din skabelon
For at bruge siden skal du vælge Kun abonnenter sideskabelon i det avancerede afsnit af din sides muligheder (på sidebjælken). Dette vil begrænse siden til loggede læsere eller dine definerede roller.