WordPress: Стварыце шаблон старонкі, які патрабуе ад карыстальніка рэгістрацыі і ўваходу ў сістэму
Мы завяршалі ўкараненне карыстальніцкай тэмы на кліенцкім сайце, і яны папрасілі нас пабудаваць нейкае ўзаемадзеянне, пры якім некаторыя старонкі былі б абмежаваныя для зарэгістраваных падпісчыкаў. WordPress сапраўды прапануе параметры бачнасці для старонак, але гэта не адпавядае дадзенаму сцэнарыю.
- прыватны – Выбар бачнасці як прыватнай дазваляе толькі адміністратарам і рэдактарам праглядаць кантэнт.
- абаронены паролем – для прагляду змесціва патрабуецца прымяненне ўнікальнага кода для кожнай старонкі.
Спачатку мы думалі аб укараненні старонніх плагінаў, але рашэнне было простым. Мы маглі б стварыць унікальны шаблон, які патрабуе ад гледачоў рэгістрацыі і ўваходу для прагляду старонкі.
Шаблон WordPress: толькі для падпісчыкаў
Спачатку мы скапіявалі шаблон старонкі нашага кліента (page.php
) у межах Дзіця тэме. Каб стварыць шаблон, вам трэба дадаць код у верхняй частцы вашай старонкі:
<?php /* Template Name: Subscribers Only */ ?>
Далей шукайце радок у кодзе вашай старонкі, які адлюстроўвае змест. Гэта павінна выглядаць так:
<?php the_content(); ?>
Зараз вам трэба будзе абгарнуць нейкі код вакол гэтага радка:
<?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; ?>
Вось тлумачэнне кода ў пунктах:
$redirect_url = get_permalink();
: Гэты радок здабывае URL бягучай старонкі і захоўвае яго ў зменнай$redirect_url
.if (is_user_logged_in()) :
: Гэты ўмоўны аператар правярае, ці ўвайшоў карыстальнік ужо ў сістэму.- Калі карыстальнік увайшоў у сістэму, код у гэтым блоку выконваецца.
<h2><?php the_title(); ?></h2>
: Гэта паказвае назву бягучай старонкі.<?php the_content(); ?>
: Гэта адлюстроўвае змест бягучай старонкі.
- Калі карыстальнік не ўвайшоў у сістэму, код у
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>
: Гэта адлюстроўвае паведамленне, якое тлумачыць, што змесціва абмежавана для пэўных роляў, і змяшчае спасылку «Увайсці». Спасылкаhref
атрыбут усталёўваецца на URL для ўваходу, згенераваныwp_login_url($redirect_url)
, забяспечваючы перанакіраванне карыстальнікаў назад на бягучую старонку пасля ўваходу ў сістэму.
Гэты код эфектыўна правярае, ці ўвайшоў карыстальнік у сістэму, і, калі не, заахвочвае яго ўвайсці, каб атрымаць доступ да забароненага кантэнту, са спасылкай, якая накіроўвае яго назад на старонку, якую ён спрабаваў праглядзець.
Прагляд па пэўнай ролі карыстальніка
Вы таксама можаце абмежаваць змесціва пэўнымі ролямі карыстальнікаў, калі хочаце:
<?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; ?>
Вось тлумачэнне кода ў пунктах:
$allowed_roles = array('subscriber', 'editor', 'author');
: Гэты радок стварае масіў дазволеных роляў, указваючы, якім ролям карыстальнікаў дазволены доступ да кантэнту. Вы можаце наладзіць гэты масіў, каб уключыць ролі, якія вы хочаце дазволіць.$user = wp_get_current_user();
: Гэты код здабывае інфармацыю аб бягучым карыстальніку, уключаючы яго ролі.$redirect_url = get_permalink();
: Гэты радок захоўвае URL бягучай старонкі ў$redirect_url
зменная, якая будзе выкарыстоўвацца для перанакіравання карыстальніка назад на бягучую старонку пасля ўваходу ў сістэму.if (array_intersect($allowed_roles, $user->roles)) :
: Гэты ўмоўны аператар правярае, ці перасякаюцца ролі карыстальніка з ролямі, пералічанымі ў$allowed_roles
масіў. Іншымі словамі, ён правярае, ці мае карыстальнік адну з дазволеных роляў.- Калі карыстальнік мае адну з дазволеных роляў, код у гэтым блоку выконваецца.
<h2><?php the_title(); ?></h2>
: Гэта паказвае назву бягучай старонкі.<?php the_content(); ?>
: Гэта адлюстроўвае змест бягучай старонкі.
- Калі карыстальнік не мае адной з дазволеных роляў, код у
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>
: Гэта адлюстроўвае паведамленне, якое тлумачыць, што змесціва абмежавана для пэўных роляў, і змяшчае спасылку «Увайсці». Спасылкаhref
атрыбут усталёўваецца на URL для ўваходу, згенераваныwp_login_url($redirect_url)
, забяспечваючы перанакіраванне карыстальнікаў назад на бягучую старонку пасля ўваходу ў сістэму.
Гэты код фактычна абмяжоўвае доступ да пэўных роляў, і калі карыстальнік не мае адной з дазволеных роляў, ён прапануе яму ўвайсці па спасылцы, якая перанакіроўвае яго назад на бягучую старонку пасля ўваходу.
Выберыце свой шаблон
Каб выкарыстоўваць старонку, вам трэба будзе выбраць Толькі для падпісчыкаў шаблон старонкі ў пашыраным раздзеле параметраў вашай старонкі (на бакавой панэлі). Гэта абмяжуе старонку толькі чытачамі, якія ўвайшлі ў сістэму, або вызначанай вамі роляй(-ямі).