مخفی کردن پست ها در وردپرس | چگونه پست ها را در وردپرس پنهان کنید؟ آیا تاکنون خواسته اید پست وبلاگ خود را از صفحه اصلی وردپرس یا صفحه بایگانی وبلاگ خود مخفی کنید؟ در حالی که می توانید پیام های وردپرس را با رمز محافظت کنید یا در مواردی به صورت خصوصی قرار دهید، در برخی موارد ممکن است بخواهید پست را از صفحه اصلی خود مخفی کنید در حالی که هنوز هم به دیگران اجازه می دهید در صورت داشتن لینک مستقیم، آن را مشاهده کنند.
راهنمای مطالعه:
مخفی کردن پست ها در وردپرس
در این مقاله از سری مقالات آموزش وردپرس نحوه پنهان کردن پست ها در وردپرس از صفحات انتخاب شده در وردپرس مانند صفحه اصلی ، بایگانی دسته ها ، نتایج جستجو و موارد دیگر به شما نشان خواهیم داد.
روش1 – یک پست وردپرس را با استفاده از افزونه از صفحه اصلی مخفی کنید
این روش مخفی کردن پست ها در وردپرس آسانتر است و برای مبتدیان نیز توصیه می شود. اولین کاری که باید انجام دهید نصب و فعال سازی افزونه WordPress Hide Posts است. برای اطلاعات بیشتر، به راهنمای مرحله به مرحله ما درباره نحوه نصب افزونه وردپرس مراجعه کنید، همچنین ویدیوی آموزش نصب افزونه وردپرس با روش های مختلف را از دست ندهید.
پس از فعال شدن افزونه ، شروع کنید و پستی را که می خواهید پنهان کنید ، ویرایش کنید. شما در ستون سمت راست ویرایشگر متوجه بخش جدیدی “پنهان کردن پستها” یا به انگلیسی ‘Hide Posts’ خواهید شد.
با کلیک بر روی آن گزینه های افزونه نمایش داده می شود. می توانید این پست را در صفحه اصلی و صفحه وبلاگ، دسته یا صفحات برچسب، صفحه نویسندگان و نتایج جستجوی سایت مخفی کنید. به سادگی گزینه هایی را که دوست دارید انتخاب کنید و سپس پست خود را ذخیره کنید.
بسته به گزینه هایی که انتخاب کرده اید، اکنون می توانید به آن صفحات مراجعه کرده و مشاهده کنید که آن پست خاص در لیست قرار نخواهد گرفت. کلیه کاربرانی که آدرس مستقیم (لینک مستقیم ) دارند، می توانند با وارد کردن URL آن را مشاهده کنند.
در حالی که این روش ساده ترین روش است، ولی فاقد چندین گزینه قدرتمند است. به عنوان مثال، شما نمی توانید یک صفحه یا یک نوع پست سفارشی مانند محصولات ووکامرسی خود را پنهان کنید. همچنین گزینه ای برای مخفی کردن پستی از فید RSS وردپرس وجود ندارد.
روش2- پست ها و برگه های وردپرس را به صورت دستی مخفی کنید
در این روش مخفی کردن پست ها در وردپرس شما باید به سایت وردپرس خود یک قطعه کد به صورت دستی اضافه کنید. وردپرس از یک جستجوی دیتابیس (کار با دیتابیس در وردپرس) برای گرفتن و نمایش پست ها بر اساس صفحه ای که کاربر در حال مشاهده است استفاده می کند. همچنین با استفاده از هوک ها یا قلاب های داخلی این کوئری ها را اصلاح می کند.
ما از آن قلاب ها برای اصلاح کوئری های وردپرس استفاده خواهیم کرد و پست ها ، صفحات و انواع پست های وردپرس را در بخش های مختلف پنهان می کنیم. یعنی اگر در این هوک ها یک کد قرار بدیم می تونیم برخی از پست ها را در صفحاتی که دوست داریم پنهان کنیم.
شما می توانید برای انجام این کار کد دلخواه خود را به پرونده function.php یا افزونه اختصاصی سایت خود اضافه کنید. همچنین به شناسه پست یا صفحاتی که می خواهید مخفی کنید، نیز نیاز خواهید داشت.
برای بدست آوردن شناسه یک نوشته یا برگه در وردپرس تنها کافیست که آن پست مورد نظر را در حالت ویرایش قرار بدید تا شناسه آن را در نوار آدرس مرورگر خود مشاهده کنید.
خب حالا بریم به کدهایی که می خواهیم با استفاده از آنها پست های مورد نیازمان را مخفی کنیم یک نگاهی بیاندازیم.
نوشته ها یا برگه های وردپرس را از صفحه اصلی مخفی کنید
کد زیر از تگ شرطی is_home () برای فهمیدن اینکه کاربر در صفحه اصلی است یا خیر استفاده می کند. در صورت رفتن کاربر به صفحه اصلی ، شناسه پستی که در کد قرار داده اید از کوئری وردپرس خارج می شود.
function wpb_exclude_from_home($query) {
if ($query->is_home() ) {
$query->set('post__not_in', array(1737, 1718));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_home');
فراموش نکنید که شناسه های موجود در آرایه را با شناسه واقعی پست یا صفحاتی که می خواهید حذف کنید جایگزین کنید.
نوشته ها یا برگه های وردپرس را از فید RSS مخفی کنید
اگر می خواهید یک نوشته در وردپرس را از صفحه اصلی و همچنین فید RSS وردپرس مخفی کنید ، می توانید به سادگی از تگ شرطی is_feed در کد استفاده کنید.
function wpb_exclude_from_feed($query) {
if ($query->is_feed() ) {
$query->set('post__not_in', array(1737, 1718));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_feed');
حال اگر به عنوان مدیر وارد شوید و سعی کنید تا از فید RSS وردپرس خود بازدید کنید ، همچنان پستهای ذکر شده در آن را مشاهده خواهید کرد. اما کاربران دیگر هنگام مشاهده فید RSS شما قادر به دیدن پست هایی که در کد بالا شناسه آنها را قرار داده اید نخواهند بود.
نوشته یا برگه وردپرس را از جستجوی سایت مخفی کنید
حال اگر بخواهید پست های خاصی را از جستجوی سایت وردپرس مخفی کنید ، چه کاری انجام می دهید؟ برای انجام این کار ، شما فقط باید تگ شرطی is_search را به کد اضافه کنید.
function wpb_exclude_from_search($query) {
if ( $query->is_search() ) {
$query->set('post__not_in', array(1737, 1718));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_search');
اکنون می توانید به وب سایت خود مراجعه کنید و پست هایی را که می خواستید مخفی کنید ، جستجو کنید. اگرچه این پست ها عمومی هستند ، اما در نتایج جستجو ظاهر نمی شوند.
نوشته ها یا برگه های وردپرس را از بایگانی مخفی کنید
در مورد پنهان کردن نوشته ها یا برگه های خاص وردپرس از صفحات بایگانی مانند دسته ، برچسب ها و بایگانی تاریخ چطور عمل می کنید؟ برای این کار از تگ شرطی is_archive استفاده خواهیم کرد.
function wpb_exclude_from_archives($query) {
if ( $query->is_archive() ) {
$query->set('post__not_in', array(1737, 1718));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_archives');
مخفی کردن نوشته ها یا برگه ها از تمامی بخش های سایت وردپرس
تاکنون یاد گرفتید که چگونه یک پست یا صفحه وردپرس را از مناطق خاص مخفی کنید. حال ، درمورد مخفی کردن پست ها در وردپرس از همه این مناطق به طور همزمان و به عبارتی از تمامی سایت وردپرس باید چگونه عمل کنید؟
برای انجام این کار ، شما می توانید تمام تگ های شرطی را که در بالا توضیح دادیم را در یک قطعه کد واحد استفاده کنید.
function wpb_exclude_from_everywhere($query) {
if ( $query->is_home() || $query->is_feed() || $query->is_search() || $query->is_archive() ) {
$query->set('post__not_in', array(1737, 1718));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_everywhere');
این کد پست هایی که شناسه آن را در کد وارد کنید را از صفحه اصلی ، فید RSS ، نتایج جستجو و صفحات بایگانی مخفی می کند.
سوالات متدوال مخفی کردن پست ها در وردپرس
شما می توانید نوشته ها یا برگه ها در وردپرس را با استفاده از دو روشی که در بالا به صورت کامل توضیح دادیم مخفی کنید. حالا بریم مشکلات استفاده از این دو روش را بررسی کنیم و ببینیم که برای مقابله با این مشکلات چه کارهایی می تونیم انجام بدیم.
آیا با استفاده از روش های بالا محتوا به صورت کامل مخفی می شود؟
در جواب این سوال باید بگویم خیر ، با استفاده از روش های گفته شده محتوای مورد نظر به صورت کامل مخفی نمی شوند به دلایل زیر:
به عنوان مثال ممکن است قبل از مخفی کردن نوشته یا برگه مورد نظر در موتور های جستجو ایندکس شده باشد و کاربران با استفاده از کش گوگل به آن دسترسی پیدا کنند.
همچنین شما ممکن است از یک افزونه وردپرس استفاده کنید که کوئری های سفارشی مخصوص به خودش را داشته باشد و کد های شما را نادیده گرفته و باز هم مطالب را نمایش دهد.
یک روش خوب برای مخفی کردن نوشته ها و برگه ها در وردپرس ، محافظت از آن با استفاده از رمز عبور است که در این صورت هر کاربری که رمز عبور را داشته باشد به آن مطلب دسترسی خواهد داشت.
همچنین می توانید یک پست خصوصی ایجاد کنید که فقط برای مدیران، ویراستاران و نویسندگان در وب سایت شما قابل مشاهده باشد.
آیا می توانم از این روش ها برای ایجاد محتوا برای کاربران خاص استفاده کنم؟
خیر ، این روش ها به شما امکان نمی دهد محتوا را با کاربران خاص به اشتراک بگذارید. یک روش بهتر استفاده از افزونه عضویت وردپرس خواهد بود.
افزونه های عضویت ویژه مانند MemberPress به شما امکان می دهد تا محتوای محدود ایجاد کنید و منتشر کنید. شما حتی می توانید برای دسترسی به محتوای خود حق اشتراک ماهیانه دریافت کنید. به زودی در آکادمی وبکیما آموزش هایی را برای راه اندازی بخش اشتراک ویژه در وردپرس قرار خواهیم داد.
جمع بندی
امیدواریم که با خواندن این مقاله یاد گرفته باشید که چگونه یک برگه یا نوشته را از صفحه اصلی وردپرس ، صفحات بایگانی و نتایج جستجو و دیگر مناطق مخفی کنید. هرگونه سوال یا ابهامی برای پنهان کردن پست ها در وردپرس دارید در بخش دیدگاه های سایت مطرح کنید تا بتونیم باهم در ارتباط باشیم.
سلام وقت بخیر. آیا میشه یک صفحه در سایت ایجاد کرد که فرد فقط با بارکد واردش بشه و اون صفحه در کل سایت هم نمایش داده نشه؟
درود، بله با کمی تحقیق و البته کدنویسی میتوانید این قابلیت را در سایت خود پیاده سازی کنید.
سلام ، با تشکر از سایت خوبتون
یه سوال داشتم
ما یه بخش توی سایتمون گذاشتیم
شخص هزینه پرداخت میکنه
بعد یه فرم رو تکمیل و ارسال میکنه
تا اینجا همه چیز خوبه و اوکیه
اما مشکل اینجاست که شخص ، میتونه با زدن دکمه بازگشت ( Back ) دوباره بره فرم رو تکمیل کنه و به اسم یه شخص دیگه فرم رزر و نوبت دهی رو تکمیل و ارسال کنه !
قانونا باید شخص اول هزینه پرداخت کنه ، بعد که پرداخت ر و انجام داد ، فرم بهش نمایش داده میشه ، اونوقت فرم رو تکمیل و ارسال میکنه
اما اگر بتونه بازگشت رو بزنه و برگرده به فرم ، عملا با یک بار پرداخت هزینه ، چندین بار میتونه به اسم های متخلفی فرم رو پر کنه که ما نمیخوایم همچین چیزی اتفاق بیفته ، چه کنیم به نظر شما ؟
باسلام و احترام، این موردی که فرمودید در این فرایند یک باگ محسوب میشود، در قدم اول شما میتوانید فرمهای ارسالی فیک را تشخیص دهید، چون بالاخره میتوانید ساعت فرمها را با ساعت تراکنشهای بانکی تطابق دهید و در عمل میتوانید از موضوع جلوگیری کنید، اما چون این موضوع کلا جالب نیست باید از یک متخصص PHP برای برطرف کردن آن کمک بگیرید تا این فرآیند را باگ گیری کند.