SHET27

محدود کردن کتابخانه رسانه وردپرس برای نویسندگان

محدود کردن کتابخانه رسانه وردپرس برای نویسندگان

اگه سایتتون چند تا نویسنده داره، احتمالاً این صحنه براتون آشناست؛ می‌رید تو کتابخانه رسانه و با یه انبار درهم‌ریخته از عکس‌های همه طرف روبه‌رو می‌شید. نویسنده‌ی الف عکس‌های نویسنده‌ی ب رو می‌بینه، یکی تصویر شاخص یه مقاله‌ی منتشرنشده رو می‌بینه، و بدتر از همه یه بنده خدایی به جای فایل خودش، فایل یکی دیگه رو حذف می‌کنه.

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

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

آنچه در این مقاله می‌خوانید

اهمیت محدود کردن نمایش رسانه‌ها به شخص آپلود کننده

بذارید قبل از این‌که بریم سراغ راه‌حل، چند تا دلیلی که معمولاً پشت این تصمیمه رو مرور کنیم. شاید بعضی‌هاش دقیقاً همون چیزی باشه که خودتون باهاش درگیرید.

حفظ حریم خصوصی و محتوای منتشرنشده: فرض کنید دارید روی یه محصول یا کمپین جدید کار می‌کنید و بنرها و اینفوگرافیک‌هاش رو آپلود کردید. تا وقتی که محدودیتی نذاشتید، کاربری که به کتابخانه رسانه دسترسی داره ممکنه قبل از انتشار اون‌ها رو ببینه. رفتار دقیق به نقش کاربری، مجوزها و افزونه‌های سایتتون بستگی داره.

تمیز موندن کتابخانه: وقتی نویسنده فقط ۴۰ تا فایل خودش رو می‌بینه به جای ۴۰۰۰ تا فایل کل سایت، خیلی سریع‌تر کارش رو راه می‌ندازه و کمتر هم فایل تکراری آپلود می‌کنه.

کم شدن خطای انسانی: این یکی از همه مهم‌تره. کتابخانه‌ی شلوغ یعنی احتمال بیشترِ حذف یا ویرایش اشتباهیِ فایل یکی دیگه.

سایت‌های عضویتی و آموزشی: اگه سایتتون اجازه‌ی آپلود به اعضا یا هنرجوها می‌ده، جدا کردن فایل‌های هر کاربر می‌تونه مدیریت کتابخانه رو خیلی راحت‌تر کنه. ولی اگه فایل‌ها محرمانه هستن، به کنترل امنیتی جدا هم نیاز دارید.

وردپرس به‌صورت پیش‌فرض

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

وضعیت معمول نقش‌های پیش‌فرض این شکلیه:

نقش کاربریآپلود فایلدیدن فایل بقیهویرایش/حذف فایل بقیه
مدیر کل (Administrator)معمولاً ✅معمولاً ✅
ویرایشگر (Editor)معمولاً ✅معمولاً ✅
نویسنده (Author)ممکنه نمایش داده بشهبه مجوزها و رابط بستگی داره
مشارکت‌کننده (Contributor)پیش‌فرض ❌نیازمند تستنیازمند تست
مشترک (Subscriber)معمولاً ❌معمولاً ❌

پس چیزی که می‌خوایم عوض کنیم نمایش فایل‌های بقیه تو کتابخانه‌ست؛ کاری نداریم به این‌که کی می‌تونه آپلود کنه یا مجوز حذف چه فایلی رو داره.

روش اول و پیشنهادی: با چند خط کد

نگران نباشید، لازم نیست برنامه‌نویس باشید. فقط باید کدها رو کپی کنید و درست بذارید سر جاشون. سه کد اول برای پوشش مسیرهای اصلی ضروری هستن. کد نقش‌های خاص و کد شمارنده اختیاری هستن.

یک توصیه‌ی مهم

کدها رو مستقیم تو فایل functions.php قالب نذارید. دو تا دلیل داره: با اولین آپدیت قالب همه‌چی پاک می‌شه (مگر این‌که قالب فرزند داشته باشید)، و مهم‌تر این‌که یه غلط تایپی کوچیک می‌تونه سایتتون رو با خطا روبه‌رو کنه.

به‌جاش می‌تونید از یه افزونه‌ی مدیریت کد مثل WPCode استفاده کنید. این افزونه قبلاً با نام Insert Headers and Footers by WPBeginner شناخته می‌شد. اسنیپت‌ها، یعنی تکه‌کدهای کوتاه، رو جدا نگه می‌داره و اجازه می‌ده هر کد رو جداگانه فعال یا غیرفعال کنید. قبل از افزودن کد هم از سایت بکاپ بگیرید و اول روی سایت آزمایشی جلو برید.

کد ضروری اول: فیلتر کردن پنجره‌ی آپلود و نمای شبکه‌ای

این کد پنجره‌ای رو فیلتر می‌کنه که موقع انتخاب تصویر شاخص یا درج عکس تو مقاله باز می‌شه.

پاپ آپ انتخاب تصویر شاخص
پاپ آپ انتخاب تصویر شاخص
add_filter( 'ajax_query_attachments_args', 'mihan_restrict_media_grid' );

function mihan_restrict_media_grid( $query ) {
    // هر کسی که اجازه‌ی ویرایش مطالب دیگران رو داره (مدیر و ویرایشگر) مستثناست
    if ( ! current_user_can( 'edit_others_posts' ) ) {
        $query['author'] = get_current_user_id();
    }

    return $query;
}

شرط edit_others_posts رو عمداً انتخاب کردیم، چون نقش‌های مدیر کل و ویرایشگر در حالت پیش‌فرض این قابلیت رو دارن. اگه مجوز نقش‌ها رو با افزونه تغییر دادید، نتیجه ممکنه فرق کنه. اگه می‌خواید فقط کاربری که قابلیت manage_options داره مستثنا باشه، می‌تونید شرط رو با توجه به ساختار دسترسی سایتتون تغییر بدید.

کد ضروری دوم: فیلتر کردن صفحه‌ی کتابخانه در نمای لیستی

کد بالا پنجره انتخاب رسانه رو فیلتر می‌کنه. برای پوشش صفحه «رسانه > کتابخانه» در نمای لیستی، این کد رو هم اضافه کنید:

add_action( 'pre_get_posts', 'mihan_restrict_media_list' );

function mihan_restrict_media_list( $query ) {
    global $pagenow;

    if ( ! is_admin() || ! $query->is_main_query() ) {
        return;
    }

    if ( 'upload.php' !== $pagenow ) {
        return;
    }

    if ( ! current_user_can( 'edit_others_posts' ) ) {
        $query->set( 'author', get_current_user_id() );
    }
}

کد اول و دوم مسیرهای متفاوتی رو پوشش می‌دن، پس هر دو رو اضافه کنید.

کد ضروری سوم: پوشش درخواست‌های REST API

REST API یه مسیر ارتباطیه که بعضی بخش‌های وردپرس و افزونه‌ها برای گرفتن اطلاعات رسانه ازش کمک می‌گیرن. کد زیر درخواست‌های استاندارد رسانه در REST API وردپرس رو بر اساس نویسنده فیلتر می‌کنه. این کد پوشش همه صفحه‌سازها و افزونه‌ها رو تضمین نمی‌کنه، چون ممکنه هر ابزار مسیر اختصاصی خودش رو داشته باشه.

add_filter( 'rest_attachment_query', 'mihan_restrict_media_rest', 10, 2 );

function mihan_restrict_media_rest( $args, $request ) {
    if ( ! current_user_can( 'edit_others_posts' ) ) {
        $args['author'] = get_current_user_id();
    }

    return $args;
}

کد اختیاری: محدودیت فقط برای نقش‌های خاص

اگه می‌خواید فقط نویسنده‌ها و مشارکت‌کننده‌ها محدود بشن، می‌تونید شرط مشترک زیر رو بسازید. یادتون باشه نقش مشارکت‌کننده در وردپرس پیش‌فرض اجازه آپلود نداره؛ این نقش فقط وقتی اینجا کاربرد داره که مجوزهاش رو تغییر داده باشید.

function mihan_should_restrict_media() {
    $restricted_roles = array( 'author', 'contributor' );
    $user = wp_get_current_user();

    if ( ! $user->exists() ) {
        return false;
    }

    return (bool) array_intersect( $restricted_roles, (array) $user->roles );
}

بعد تو سه کد اصلی، به‌جای ! current_user_can( 'edit_others_posts' ) بنویسید mihan_should_restrict_media(). اگه نقش سفارشی دارید، نام فنی درست اون نقش رو هم به آرایه اضافه کنید.

کد آزمایشی و اختیاری: هماهنگ کردن شمارنده‌ها

بعد از اعمال محدودیت، شمارنده‌های بالای کتابخانه ممکنه هنوز تعداد فایل‌های بیشتری رو نشون بدن. کد زیر یه نمونه برای هماهنگ کردن شمارنده‌هاست، ولی جزو محدودیت اصلی نیست. چون ساختار شمارش پیوست‌ها و افزونه‌های رسانه ممکنه روی نتیجه اثر بذارن، این کد رو فقط بعد از آزمایش روی نسخه فعلی وردپرس و همه نوع فایل سایتتون استفاده کنید. اگه شمارنده درست نبود، این بخش رو فعال نکنید؛ سه کد اصلی بدون اون هم کار خودشون رو انجام می‌دن.

add_filter( 'wp_count_attachments', 'mihan_fix_attachment_count' );

function mihan_fix_attachment_count( $counts ) {
    global $wpdb;

    if ( current_user_can( 'edit_others_posts' ) ) {
        return $counts;
    }

    $user_id = get_current_user_id();

    $results = $wpdb->get_results( $wpdb->prepare(
        "SELECT post_mime_type, COUNT( * ) AS num_posts
         FROM {$wpdb->posts}
         WHERE post_type = 'attachment'
         AND post_author = %d
         AND post_status != 'trash'
         GROUP BY post_mime_type",
        $user_id
    ), ARRAY_A );

    $new_counts = array();

    foreach ( (array) $results as $row ) {
        $new_counts[ $row['post_mime_type'] ] = (int) $row['num_posts'];
    }

    return (object) $new_counts;
}

نکته‌ی مهم: این کار «امنیت» نیست، فقط «نمایش» رو محدود می‌کنه

هر کاری که تا اینجا انجام دادیم، فقط درخواست‌های مربوط به نمایش رسانه داخل وردپرس رو فیلتر می‌کنه. تو نصب معمول وردپرس، فایل‌ها تو پوشه‌ی wp-content/uploads می‌مونن و کسی که لینک مستقیم یه فایل عمومی رو داشته باشه ممکنه بتونه اون رو باز کنه. موتورهای جست‌وجو هم ممکنه فایل عمومی رو پیدا کنن. البته تنظیمات سرور، فضای ذخیره‌سازی خصوصی، CDN یا افزونه محافظت از فایل می‌تونه این رفتار رو تغییر بده.

پس اگه فایل حساسی دارید، مثل قرارداد، فایل مشتری یا سند داخلی، فیلتر کردن کتابخانه‌ی رسانه به‌تنهایی کافی نیست. برای این فایل‌ها این گزینه‌ها رو بررسی کنید:

فایل‌های حساس رو تو کتابخانه‌ی عمومی رسانه نذارید: برای اسناد داخلی از فضایی استفاده کنید که کنترل دسترسی واقعی داره و فایل رو فقط بعد از بررسی هویت کاربر تحویل می‌ده.

محافظت در سطح سرور: قوانین .htaccess روی آپاچی یا تنظیمات NGINX می‌تونن دسترسی رو کنترل کنن، ولی بستن مستقیم پوشه آپلود ممکنه تصاویر عمومی سایتتون رو هم از دسترس خارج کنه. این راه به طراحی مسیر خصوصی و کنترل دسترسی درست نیاز داره، پس بدون بکاپ و کمک مدیر سرور اجراش نکنید.

افزونه‌های محافظت از فایل: بعضی افزونه‌ها فایل رو پشت یه مسیر کنترل‌شده می‌ذارن و قبل از تحویلش، دسترسی کاربر رو بررسی می‌کنن. قبل از انتخاب، سازگاری اون افزونه با نوع فایل، هاست و افزونه فروش یا عضویت سایتتون رو بسنجید.

خلاصه‌ش این‌که محدود کردن کتابخانه برای نظم و حریم خصوصی تیمی مفیده، ولی نباید به‌عنوان تنها لایه امنیت فایل بهش تکیه کنید.

چرا آزمایش گوتنبرگ و صفحه‌سازها مهمه؟

رابط‌های مختلف همیشه از یه مسیر یکسان برای گرفتن رسانه‌ها کمک نمی‌گیرن. ممکنه محدودیت تو صفحه کتابخانه درست کار کنه، ولی نویسنده تو المنتور، گوتنبرگ یا یه افزونه دیگه نتیجه متفاوتی ببینه.

برای همین فقط به فعال شدن کد یا توضیحات افزونه تکیه نکنید. رابط‌های واقعی سایتتون رو با یه حساب آزمایشی بررسی کنید.

چک‌لیست تست نهایی

یه حساب کاربری آزمایشی با نقش نویسنده بسازید. چند فایل رو با حساب مدیر و چند فایل رو با حساب نویسنده آپلود کنید. بعد با حساب نویسنده وارد بشید و این موارد رو یکی‌یکی بررسی کنید:

  • مسیر «رسانه > کتابخانه» در نمای شبکه‌ای
  • همون صفحه در نمای لیستی
  • پنجره انتخاب تصویر شاخص
  • پنجره درج تصویر داخل ویرایشگر بلوکی
  • کتابخانه رسانه داخل المنتور یا صفحه‌ساز خودتون
  • جست‌وجو، فیلتر نوع فایل و شمارنده‌های کتابخانه
  • امکان باز کردن، ویرایش و حذف فایل متعلق به کاربر دیگه با آدرس مستقیم پیشخوان

این آزمایش رو بعد از به‌روزرسانی مهم وردپرس، افزونه مدیریت رسانه یا صفحه‌ساز هم تکرار کنید.

روش دوم: با افزونه

اگه اصلاً دوست ندارید سراغ کد برید، می‌تونید افزونه نصب کنید. اطلاعات نسخه، نصب فعال و سازگاری زمان‌حساس هستن، پس صفحه رسمی هر افزونه رو درست قبل از نصب دوباره بررسی کنید. اطلاعات زیر بر اساس بررسی مرداد ۱۴۰۵ نوشته شده و ممکنه بعداً تغییر کنه.

قبل از نصب، این سه مورد رو نگاه کنید

  • آخرین به‌روزرسانی و نسخه آزمایش‌شده وردپرس. افزونه قدیمی ممکنه با نسخه فعلی وردپرس یا ویرایشگر سایتتون درست کار نکنه.
  • تعداد نصب فعال و بررسی‌ها. نصب فعال کم لزوماً نشونه بد بودن افزونه نیست، ولی یعنی تجربه عمومی منتشرشده از اون کمتره.
  • فروم پشتیبانی. ببینید توسعه‌دهنده آخرین بار کِی جواب داده و چه مشکل‌های حل‌نشده‌ای درباره نسخه فعلی وردپرس ثبت شده.

گزینه‌ی اول: Media Restriction

افزونه Media Restriction
افزونه Media Restriction

لینک رسمی:Media Restriction در مخزن وردپرس

در بررسی مرداد ۱۴۰۵، نسخه 2.1.0 این افزونه در دسترس بود و حداقل PHP 7.4 می‌خواست. توضیحات رسمی افزونه می‌گفت محدودیت بر اساس نقش کاربری، استثنا کردن کاربران خاص و پوشش نمای شبکه‌ای، نمای لیستی و REST API رو ارائه می‌کنه. طبق گزارش تغییرات رسمی، بخش REST API در نسخه 2.0.0 بازطراحی شده.

بعد از نصب، تنظیمات افزونه رو باز کنید، نقش‌هایی که باید محدود بشن انتخاب کنید و کاربرهای استثنایی رو اضافه کنید. اسم و محل دقیق گزینه‌ها ممکنه با نسخه‌های بعدی عوض بشه، پس توضیحات داخل همون نسخه رو هم بخونید. بعد چک‌لیست بالا رو با یه حساب نویسنده اجرا کنید.

هشدار: در بررسی مرداد ۱۴۰۵، صفحه رسمی افزونه بیشتر از ۴۰ نصب فعال و بدون بررسی کاربری رو نشون می‌داد. این آمار به‌تنهایی کیفیت افزونه رو ثابت یا رد نمی‌کنه، ولی نشون می‌ده بازخورد عمومی منتشرشده محدوده. آمار روز رو از صفحه رسمی ببینید و افزونه رو اول روی سایت آزمایشی بسنجید.

گزینه‌ی دوم: Restrict Media Library Access

افزونه restrict media library access
افزونه restrict media library access

لینک رسمی:Restrict Media Library Access در مخزن وردپرس

در بررسی مرداد ۱۴۰۵، این افزونه حدود ۲۰۰۰ نصب فعال داشت. توضیحاتش می‌گفت بدون صفحه تنظیمات جدا کار می‌کنه و نویسنده‌ها و مشارکت‌کننده‌ها فقط آپلودهای خودشون رو می‌بینن، ولی مدیر و ویرایشگر دسترسی کامل دارن. این رفتار رو روی نسخه و نقش‌های واقعی سایتتون دوباره بررسی کنید.

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

گزینه‌ی سوم: WP Users Media

افزونه wp-users-media
افزونه wp-users-media

WP Users Media در مخزن وردپرس سال‌ها یکی از گزینه‌های شناخته‌شده این کار بود، ولی دیگه نباید نصب یا استفاده بشه. صفحه رسمی مخزن می‌گه این افزونه از ۷ مارس ۲۰۲۴ به‌خاطر مشکل امنیتی بسته شده و برای دانلود در دسترس نیست. آخرین نسخه منتشرشده اون 4.2.3 بوده و فقط با نسخه‌های قدیمی وردپرس آزمایش شده.

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

خلاصه‌ی مقایسه

روش کدنویسیMedia RestrictionRestrict Media Library AccessWP Users Media
تنظیم بر اساس نقشطبق توضیحات رسمی ✅ثابت و محدودنامناسب برای استفاده
استثنا کردن کاربر خاصبا تغییر کدطبق توضیحات رسمی ✅صفحه تنظیمات ندارهنامناسب برای استفاده
پوشش REST APIبرای مسیر استاندارد رسانهطبق توضیحات رسمی از نسخه 2.0.0تأیید نشدهتأیید نشده
نیاز به دانش فنیکم، ولی نیازمند آزمایشکمکمنباید استفاده بشه
وضعیت کلیپیشنهادی با آزمایش کاملنوپا و نیازمند تستسازگاری نامطمئنبسته‌شده به‌خاطر مشکل امنیتی

ویرایشگرها رو فراموش نکنید!

یه اشتباه رایج اینه که محدودیت رو روی همه نقش‌های غیرمدیر اعمال می‌کنن و ویرایشگر هم ناخواسته محدود می‌شه.

ویرایشگر معمولاً باید مقاله‌های بقیه رو بازبینی و اصلاح کنه. اگه نتونه تصویر شاخصی رو که نویسنده آپلود کرده ببینه یا عوض کنه، بخشی از کارش مختل می‌شه. پس اگه روند کاری تیم به این دسترسی نیاز داره، نقش Editor رو محدود نکنید. شرط edit_others_posts تو نقش‌های پیش‌فرض مدیر و ویرایشگر رو مستثنا می‌کنه، ولی اگه مجوز نقش‌ها رو تغییر دادید باید نتیجه رو آزمایش کنید.

اگه یه نفر با نقش نویسنده باید دسترسی بیشتری داشته باشه، مثل عضو تیم گرافیک، می‌تونید از قابلیت استثنا کردن کاربر تو افزونه مناسب استفاده کنید یا کد رو با کمک توسعه‌دهنده بر اساس شناسه کاربری تغییر بدید.

چالش تصاویر مشترک و فایل‌های تکراری

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

چند تا راه‌حل براتون داریم:

فهرست فایل‌های عمومی تیم رو جدا نگه دارید: مدیر می‌تونه فایل‌های تأییدشده رو آپلود کنه و لینک اون‌ها رو تو یه سند داخلی در اختیار نویسنده‌ها بذاره. اگه ویرایشگر اجازه درج از URL رو می‌ده، نویسنده می‌تونه از همون لینک استفاده کنه.

مالک فایل رو با احتیاط عوض کنید: اگه ابزار مدیریت رسانه امکان تغییر نویسنده پیوست رو می‌ده، می‌تونید مالکیت فایل لازم رو به کاربر موردنظر منتقل کنید. این تغییر ممکنه روی دسترسی بقیه اثر بذاره، پس اول روی سایت آزمایشی بررسیش کنید.

از دسته‌بندی رسانه برای مدیریت کمک بگیرید: دسته‌بندی می‌تونه پیدا کردن فایل‌های عمومی رو برای مدیر راحت‌تر کنه، ولی به‌تنهایی دسترسی فایل رو محدود نمی‌کنه و لزوماً فایل رو برای نویسنده محدودشده نمایش نمی‌ده.

حساب کاربری مشترک نسازید: اشتراک رمز عبور مشخص نمی‌کنه هر تغییر رو چه کسی انجام داده و خطر امنیتی داره. بهتره هر نفر حساب خودش رو داشته باشه.

مشکلات رایج و راه‌حل

تصاویر شاخص مقاله‌های قدیمی تو کتابخانه پیدا نمی‌شن: اگه مقاله رو نویسنده نوشته ولی تصویر شاخصش رو مدیر آپلود کرده، ممکنه نویسنده اون تصویر رو تو فهرست محدودشده نبینه. تصویر فعلی ممکنه همچنان روی مقاله بمونه، ولی برای انتخاب دوباره باید مالکیت و دسترسی فایل رو بررسی کنید.

کد یا افزونه رو گذاشتم ولی هیچ اتفاقی نیفتاد: با حساب نویسنده آزمایش کنید، نه حساب مدیر؛ چون مدیر تو روش پیشنهادی محدود نمی‌شه. بعد کش سایت و مرورگر رو خالی کنید و هر رابط رو جداگانه بسنجید.

پاک کردن کش در افزونه رخش
پاک کردن کش در افزونه رخش

با افزونه پوشه‌بندی رسانه تداخل داره: افزونه‌های پوشه‌بندی ممکنه روی همون درخواست‌های کتابخانه اثر بذارن. روی سایت آزمایشی، افزونه‌ها رو یکی‌یکی غیرفعال کنید تا عامل تداخل مشخص بشه.

تو وردپرس چندسایتی درست کار نمی‌کنه: تو حالت شبکه‌ای، نقش و دسترسی یه کاربر ممکنه بین سایت‌های شبکه فرق کنه. روی هر سایت جداگانه و با نقش واقعی همون سایت آزمایش کنید.

سؤالات متداول

آیا مدیر کل هم محدود می‌شه؟

نه. تو کدهای پیشنهادی، کاربری که قابلیت edit_others_posts داره محدود نمی‌شه. مدیر کل و ویرایشگر تو نقش‌های پیش‌فرض این قابلیت رو دارن، ولی اگه مجوزها رو تغییر دادید باید دوباره آزمایش کنید.

روی فایل‌هایی که قبلاً آپلود شدن هم اعمال می‌شه؟

بله. فیلتر از شناسه نویسنده ثبت‌شده برای هر فایل کمک می‌گیره، پس فایل‌های قدیمی رو هم در بر می‌گیره. بهتره چند فایل قدیمی با مالک‌های متفاوت رو آزمایش کنید.

سرعت سایت رو کم می‌کنه؟

سه کد اصلی روی درخواست‌های کتابخانه رسانه اثر می‌ذارن، ولی اثر واقعی به تعداد فایل‌ها، هاست و افزونه‌های سایتتون بستگی داره. سرعت باز شدن و جست‌وجوی کتابخانه رو قبل و بعد از اجرا بسنجید.

نویسنده می‌تونه فایل بقیه رو حذف کنه؟

این مقاله نمایش فایل‌ها رو محدود می‌کنه و جای کنترل مجوز حذف رو نمی‌گیره. امکان حذف به قابلیت‌های نقش، مالک فایل و افزونه‌های سایتتون بستگی داره، پس اون رو جداگانه با حساب نویسنده آزمایش کنید.

بدون افزونه هم می‌شه؟

بله. سه کد اصلی نمای شبکه‌ای، نمای لیستی و مسیر استاندارد رسانه در REST API رو فیلتر می‌کنن. چون بعضی صفحه‌سازها مسیر اختصاصی دارن، همه رابط‌های سایتتون رو جدا آزمایش کنید.

بازدیدکننده‌های سایت هم فایل‌ها رو نمی‌بینن؟

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

جمع‌بندی

برای محدود کردن کتابخانه رسانه وردپرس برای نویسندگان، سه کد اصلی مربوط به پنجره انتخاب رسانه، نمای لیستی و REST API رو تو ابزار مدیریت کد بذارید. کد نقش‌های خاص و کد شمارنده اختیاری هستن. بعد با یه حساب نویسنده همه مسیرهای واقعی سایتتون رو آزمایش کنید.

اگه افزونه رو ترجیح می‌دید، Media Restriction امکانات بیشتری رو تو توضیحات رسمی اعلام می‌کنه، ولی بازخورد عمومی محدودی داره. Restrict Media Library Access قدیمی‌تره و سازگاری فعلیش نیاز به بررسی جدی داره. WP Users Media هم به‌خاطر مشکل امنیتی بسته شده و نباید ازش استفاده کنید.

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

اگه سؤالی داشتید یا تو یکی از مسیرهای کتابخانه نتیجه متفاوتی دیدید، جزئیات نسخه وردپرس، نقش کاربری و افزونه‌های رسانه سایتتون رو تو کامنت‌ها بنویسید.

نظر شما در این مورد چیه؟

    پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
    تیم میهن وردپرس
    پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
    تیم میهن وردپرسخارج از ساعات کاری هستیم؛ دستیار هوش مصنوعی پاسخگوی شماست.هوش مصنوعی

    در حال بارگذاری...

    هر سوالی دارید بپرسید.پاسخگوی شما هستیم.