مخفی کردن نوشته های رمزدار در وردپرس
محافظت کردن یک نوشته یا اصطلاحا رمزدار کردن آن، روشی برای خصوصی کردن محتوای یک مطلب در وردپرس است که حتما با آن آشنا هستید و یادتان هست که قبلا روش رمزدار کردن یک نوشته را به شما آموزش داده بودیم. هرچند این روش برای خصوصی سازی محتوای مطلب، روش مناسبی است اما مشکل اینجاست که نوشته هایی که به این شکل محافظت میشوند در لیست نوشته های سایت شما برای تمامی کاربران و بازدیدکنندگان سایت به نمایش در می آیند و هر کس که رمز نوشته ی مورد نظر را در اختیار داشته باشد، با ورود به نوشته و وارد کردن رمز قادر به خواندن آن خواهد بود. پس مشخص است که اگر بخواهید یک مطلب کاملا خصوصی باشد و تنها افراد دلخواه شما از وجود آن با خبر بوده و قادر به خواندن آن باشند، این روش، روش کارامدی نیست. بنابراین کاری که در آموزش امروز قرار است انجام دهیم، این خواهد بود که از نمایش نوشته های رمز دار در سایت و در واقع حلقه ی وردپرس (آرشیو ها، دسته بندی ها و … ) به طور کامل جلوگیری به عمل آوریم و در واقع نوشته های رمز دار را به طور کامل در سایت مخفی کنیم. در این حالت تنها اشخاصی که شما لینک نوشته را در اختیارشان قرار داده باشید، قادر به مشاهده نوشته ی مورد نظر خواهند بود. (طبیعی است که این افراد هم نیاز به وارد کردن رمز خواهند داشت)
جهت جلوگیری از نمایش نوشته های رمزدار در سایت کافی است کد زیر را در فایل functions.php یا افزونه site specific ای که قبلا با هم ایجاد کرده بودیم قرار دهید :
1 2 3 4 5 6 7 | function mrcode_password_post_filter( $where = '' ) { if (!is_single() && !is_admin()) { $where .= " AND post_password = ''"; } return $where; } add_filter( 'posts_where', 'mrcode_password_post_filter' ); |
همانطور که قبلا هم به این نکته اشاره کردیم، پس از قرار دادن کد در محل ذکر شده، نوشته های محافظت شده در سایت به نمایش در نخواهند آمد و تنها از طریق وارد کردن آدرس مستقیم نوشته ی مورد نظر، قادر به دسترسی به آن خواهید بود.
کد بالا، نوشته های رمز دار را، بحز ادمین، از دید همه مخفی خواهد کرد. حال اگر وبسایت شما دارای چندین نویسنده باشد شاید مایل باشید نویسندگانی که مجاز به ویرایش نوشته های رمزدار هستند نیز قادر به مشاهده این نوع نوشته ها در سایت باشند. در صورتی که مایلید چنین اتفاقی بیافتد کافی است بجای کد بالا از کد زیر استفاده کنید :
1 2 3 4 5 6 7 | function mrcode_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', 'mrcode_password_post_filter' ); |
به همین سادگی. حالا نوشته های محافظت شده ی شما، واقعا خصوصی هستند …