گاهی اوقات پیش می آید در سایتمان یک مطلب یا برگه ای ایجاد کنیم و محتوای آن را بخواهیم برای افرادی که به حساب کاربری خود وارد شده اند اختصاص دهیم و بطور خودکار آنها را به صفحه ورود به حساب یا عضویت ریدایرکت کنیم. خوشبختانه اینکار با توابع به راحتی قابل انجام است. در ادامه با بی تاک همراه باشید.

بطور عادی برای انجام چنین ایده ای برای مطالب یا مطالب خاص که فایل مخصوص به خود را ندارند، باید ابتدا کد زیر را داخل فایل functions.php
قالب قرار دهیم:
function betalk_force_login() {
global $post;
if (!is_single()) return;
$ids = array(188, 185, 171); // آی دی مطالب موردنظر
if (in_array((int)$post->ID, $ids) && !is_user_logged_in()) {
auth_redirect();
}
}
در خط 4 باید آی دی مطالب موردنظرتان را وارد کنید. در کد بالا بطور نمونه سه آی دی وارد شده که آی دی مطالب موردنظرتان را باید جایگزین کنید. و پس از آن، باید کد زیر را در خط اول فایل single.php
قرار دهید که پیش از اجرای صفحه، ابتدا بررسی شود آیا مطلبی که کاربر قصد مشاهده آن دارد محدود شده است یا خیر:
<?php betalk_force_login(); ?>
و به این ترتیب می توانید مطالب دلخواهتان را فقط به کاربران وارد شده نمایش دهید.
—
اما در خصوص برگه ها، ما می توانیم از راه مشابه بالا استفاده کنیم اما چون در خصوص برگه ها می توانیم یک “قالب برگه” بسازیم و فایلی مخصوص به آن برگه را ایجاد کنیم، انجام اینکار می تواند متفاوت باشد و نیاز نباشد تابع بالا را در تمامی مطالب اجرا کنیم. برای برگه ها، اگر می توانید یک فایل برگه جداگانه بسازید، می توانید بجای کدهای بالا، کد زیر را در ابتدای فایل برگه موردنظر قرار دهید:
<?php if (!is_user_logged_in()) {
header("Location: https://betalk.ir/login", TRUE, 302); exit();
}
?>
کافیست لینکی که قرار است کاربران وارد نشده به آن ریدایرکت شوند را در کد بالا ویرایش کنید.
—
اگر نمی توانید برای برگه موردنظرتان یک فایل جداگانه برای قالب برگه بسازید، می توانید کد قبل را به این صورت ویرایش کنید و آن را در خط اول فایل page.php
قالبتان قرار دهید:
<?php
$ids = array(188, 185, 171); // آی دی برگه ها را وارد کنید
if (in_array((int)$post->ID, $ids) && !is_user_logged_in()) {
header("Location: https://betalk.ir/login", TRUE, 302); exit();
}
?>
در خط دوم آی دی برگه های موردنظر را وارد کنید و در خط سوم لینکی که کاربران باید به آن ریدایرکت شوند را وارد کنید.