نمایش فایل های خود کاربر در بخش رسانه های وردپرس

نمایش فایل های خود کاربر در بخش رسانه های وردپرس

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

برای این کار کافی است کد زیر را در فایل functions.php قالب قرار داده و آن را ذخیره کنید :

//Manage Your Media Only
function mymo_parse_query_useronly( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false ) {
        if ( !current_user_can( 'level_5' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}

add_filter('parse_query', 'mymo_parse_query_useronly' );

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

2 پاسخ
  1. سحر
    سحر says:

    من این کدو در فانکشن گذاشتم
    دو تا یوزر نویسنده هم درست کردم
    عکس که آپلود میکردم هر دو یوزر دسترسی داشتند
    خود کد رو میشه یک توضیحی بدید ؟

    پاسخ
    • امیر عربی
      امیر عربی says:

      احتمالا کد بالا با ورژن های جدید وردپرس سازگاری نداره .
      از کد زیر استفاده کنید:

      add_action('pre_get_posts','users_own_attachments');
      function users_own_attachments( $wp_query_obj ) {
      
          global $current_user, $pagenow;
      
          if( !is_a( $current_user, 'WP_User') )
              return;
      
          if( (   'upload.php' != $pagenow ) &&
          ( ( 'admin-ajax.php' != $pagenow ) || ( $_REQUEST['action'] != 'query-attachments' ) ) ) // <-- let's work on this line
              return;
      
          if( !current_user_can('delete_pages') )
              $wp_query_obj->set('author', $current_user->id );
      
          return;
      }
      پاسخ

دیدگاه خود را ثبت کنید

مطلب خاصی فکرتان را مشغول کرده است ؟
آن را با ما در میان بگذارید !

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *