وردپرس: یک قالب صفحه ایجاد کنید که نیاز به ثبت نام و ورود کاربر دارد
ما در حال اتمام اجرای یک موضوع سفارشی در یک سایت مشتری بودیم، و آنها درخواست کردند که نوعی تعامل ایجاد کنیم که در آن برخی از صفحات محدود به مشترکین ثبت شده باشد. وردپرس گزینه های Visibility را برای صفحات ارائه می دهد، اما این سناریو را برآورده نمی کند.
- خصوصی – انتخاب قابلیت مشاهده بهعنوان خصوصی، مدیران و ویرایشگران را قادر میسازد تا محتوا را مشاهده کنند.
- رمز عبور محافظت شده است - برای مشاهده محتوا نیاز به یک کد منحصر به فرد برای هر صفحه دارد.
در ابتدا به فکر پیاده سازی افزونه های شخص ثالث بودیم، اما راه حل ساده بود. ما می توانیم یک الگوی منحصر به فرد ایجاد کنیم که بینندگان را ملزم به ثبت نام و ورود به سیستم برای مشاهده صفحه کند.
قالب وردپرس: فقط مشترکین
ابتدا، قالب صفحه مشتری خود را کپی کردیم (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)
، اطمینان حاصل شود که کاربران پس از ورود به صفحه فعلی به صفحه فعلی هدایت می شوند.
این کد به طور موثر دسترسی به نقشهای خاص را محدود میکند و اگر کاربر یکی از نقشهای مجاز را نداشته باشد، از او میخواهد تا با پیوندی وارد شود که پس از ورود به صفحه فعلی، او را به صفحه فعلی هدایت میکند.
الگوی خود را انتخاب کنید
برای استفاده از صفحه، باید آن را انتخاب کنید فقط مشترکین قالب صفحه در قسمت پیشرفته گزینه های صفحه شما (در نوار کناری). این صفحه را به خوانندگان وارد شده یا نقش(های) تعریف شده شما محدود می کند.