آموزش مخفی کردن محتوای رمزدار از لیست مطالب وردپرس
- آموزش • آموزش وردپرس
- ۲۳ فروردین ۱۴۰۲
- 1,161 بازدید
وردپرس قابلیتی برای ایجاد مطالب رمزدار و خصوصی دارد که محتوای آن فقط برای افرادی که پسورد مربوطه را دارند قابل نمایش باشد. به صورت پیشفرض، وردپرس فقط محتوای این گونه پستها را مخفی میکند اما عنوان آنها همچنان با پیشوند «محافظت شده» در لیست مطالب نمایش داده میشوند. در این مقاله به آموزش مخفی کردن محتوای رمزدار از لیست مطالب وردپرس میپردازیم. با ما همراه باشید.
آنچه در این پست میخوانید
چرا مطالب محافظت شده را در لیست پستها مخفی کنیم؟
همانطور که گفته شد، وردپرس پستهای رمزدار را با پیشوند «محافظت شده» در لیست مطالب نمایش میدهد و کاربران جهت مشاهده محتوای آنها، نیاز به وارد کردن رمز عبور دارند.
عنوان این مطالب در صفحه اصلی، آرشیو، ویجت پستهای اخیر و به طور کلی هر جا که لیستی از عناوین را نمایش میدهید، ظاهر میشود. به همین دلیل، اگر قصد نگهداری برخی از محتواها به شکل کاملاً خصوصی را دارید، این شرایط دلخواه شما نیست.
نه تنها کاربرانی که پسورد مطالب را ندارند میتوانند عناوین آنها را مشاهده کنند، بلکه امکان وارد کردن رمز عبور هم وجود دارد و همانطور که همه ما میدانیم، در این بین احتمال کرک شدن و دسترسی غیرمجاز هم هست.
با این مقدمه، نگاهی به نحوه عدم نمایش پستهای محافظت شده در حلقه مطالب وردپرس میاندازیم.
نحوه مخفی کردن محتوای رمزدار از لیست مطالب وردپرس
برای این کار، کافیست کد زیر را به فایل functions.php قالب خود اضافه کنید. توصیه میکنیم که جهت جلوگیری از بروز هرگونه مشکل، آموزش افزودن کد به سایت وردپرسی را مطالعه فرمائید.
function vebeet_password_post_filter( $where = '' ) { if (!is_single() && !is_admin()) { $where .= " AND post_password = ''"; } return $where; } add_filter( 'posts_where', 'vebeet_password_post_filter' );
این کد کوئری ارسال شده به وردپرس را با استفاده از فیلتر posts_where تغییر میدهد و میخواهد همه پستهایی را که بدون پسورد هستند واکشی کند.
پس از قرار دادن کد، وبسایت خود را مشاهده کنید و خواهید دید که مطالب رمزدار در صفحه اصلی، صفحه آرشیو و… نمایش داده نمیشوند.
همچنان میتوان با استفاده از لینک مستقیم پستها، به آنها دسترسی داشت.
مثال بالا، مطالب مذکور را از معرض دید کلیه کاربران خارج میکند؛ اما اگر وبسایتی با چند ویراستار یا مدیر محتوا داشتید که نیازمند مشاهده و ویرایش پستهای مخفی بودند، چه باید کرد؟
به راحتی میتوان کد فوق را با افزودن یک شرط همانند زیر تغییر داد:
function vebeet_password_post_filter( $where = '' ) { if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) { $where .= " AND post_password = ''"; } return $where; } add_filter( 'posts_where', 'vebeet_password_post_filter' );
در این مثال، بررسی میکنیم که اگر شخص دسترسی ویرایش مطالب رمزدار را ندارد، فقط پستهای بدون رمز عبور را به اون نمایش میدهیم.
با انجام این کار، تمام کاربرانی که نقش مدیر یا ویراستار داشته باشند، امکان مشاهده مطالب محافظت شده را روی وبسایت خواهند داشت.
امیدواریم که این مقاله در جهت مخفی کردن محتوای رمزدار از لیست مطالب وردپرس برای شما مفید واقع شده باشد. شاد باشید.