اذهب إلى المحتوى

إحدى المميزات الرئيسية لووردبريس والتي عادة لا يعرف عنها الكثيرون هي أن هناك رتبًا للأعضاء مختلفة الصلاحيات والمستويات. وهي تساعد على التأكد من وصول المستخدمين للأماكن التي يحتاجونها فقط دون العبث بأدوات قد تتسبب بتوقّف الموقع. سنتحدث عنها باختصار في هذا المقال بالإضافة إلى كيفية  إنشاء رتب أعضاء مُخصَّصة بنفسك.

wp-custom-user-roles_(1).thumb.png.c2b99

لقد كانت رتب الأعضاء جزءًا لا يتجزأ من تجربة ووردبريس منذ الإصدارة رقم 2.0. ومع ذلك لا يدرك معظم الناس وجودها، فيمنحون حقوق الإدارة الكاملة لكل شخص يملك وصولًا إلى لوحة التحكم الخاصة بهم (وهذا بالطبع غير مستحب لأسباب عديدة). يأتي ووردبريس مجهزًا بستّ رتب افتراضية:

  • مدير: يملك جميع الخصائص والوظائف الإدارية في الموقع.
  • محرر: يمكنه نشر وإدارة مقالات جميع المستخدمين، بما في ذلك مقالاتهم الخاصة.
  • مؤلف: يمكنه نشر وإدارة مقالاته الخاصة.
  • مساهم: يمكنه كتابة وإدارة مقالاته الخاصة ولكن لا يمكنه نشرها.
  • مشترك: يمكنه فقط إدارة نبذته الخاصة.

لِم نستخدم رتب الأعضاء المُخصَّصة؟

بالنسبة لمعظم الناس تفي رتب الأعضاء الافتراضية بالمطلوب. ولكن هناك حالات تحتاج فيها لرتبة ذات صلاحيات مختلفة عن الصلاحيات المتاحة في الرتب الافتراضية. وفي هذا المقال سنعرف كيف تنشئ رتب أعضاء مُخصَّصة بنفسك دون الاستعانة بالإضافات.

دعنا نلقِ مثالًا من العالم الواقعي. إذ عادة ما أستخدم رتب الأعضاء المُخصَّصة للتأكد من أن عملائي يملكون نفاذًا فقط للأشياء التي يحتاجونها. قد يختلف البعض مع هذا بحجة أنه موقع العميل ويجب أن يملك صلاحيات المدير بصفته المالك. وهذا صحيح إذا كنت ستسلم الموقع إلى العميل ولن تكون مسئولًا عن صيانة الموقع.

لكن إذا كنت مسئولًا عن الحفاظ على الموقع قائمًا وفعّالًا طوال اليوم، فهنا أقترح عليك تحديد صلاحيات العميل عن طريق رتبة مُخصَّصة. هكذا أستطيع منح العميل كل شيء يحتاجه للإبقاء على موقعه نشطًا، مثل إضافة المحتوى، وربما إضافة فعاليات أو أي شيء يريدون فعله. ولكن ما لا يستطيعون فعله هي الأشياء التي قد تتسبب بسقوط الموقع أو تعطيل وظيفته. إذ أحظر صلاحيات إضافة أو حذف الإضافات والقوالب، وتحديث البنية الأساسية، وكل الوظائف التي تقع ضمن مجالي في صيانة الموقع.

وظائف ووردبريس الأساسية

لإدارة الرتب والصلاحية بكفاءة، هناك خمس وظائف بسيطة:

  • ()add_role: تتيح لك إضافة رتبة مُخصَّصة.
  • ()remove_role: تتيح لك حذف رتبة مُخصَّصة.
  • ()add_cap: تتيح لك إضافة صلاحيات جديدة إلى الرتبة.
  • ()remove_cap: تتيح لك حذف صلاحيات من الرتبة.
  • ()get_role: تعرض لك معلومات عن رتبة ما بالإضافة إلى الصلاحيات المُلحقة بها.

سنستخدم فقط وظيفة ()add_role في هذا المقال عند إنشاء رتبة مُخصَّصة لعميلنا الخيالي.

تحديد صلاحيات رتبة العضو

قبل أن نبدأ في كتابة النص البرمجي علينا أن نجهز خطة، لأنه ليس من المستحب البداية في البرمجة دون خطط.

أولًا، نحتاج لتسمية رتبة العضو خاصتنا. ويمكننا تسميتها ببساطة "عميل Client”.

ثانيًا، نحتاج لتحديد صلاحيات رتبة "عميل". هناك حوالي 50 صلاحية مختلفة للاختيار منها في النسخة الافتراضية من ووردبريس (ويزداد العدد عند إنشاء الإضافات). هدفنا هو أن يستطيع العميل فعل الآتي:

  • إنشاء المقالات.
  • تعديل المقالات.
  • تعديل مقالات الآخرين.
  • إدارة التصنيفات.
  • تعديل الصفحات.

وفي الوقت ذاته لا نريده أن يستطيع فعل الآتي:

  • تعديل القوالب.
  • إضافة أو حذف الإضافات.
  • تحديث البنية الأساسية.

كتابة النص البرمجي

سنضيف هذا النص البرمجي إلى ملف functions.php التابع لقالبنا الفعّال. لذا دعنا نبدأ بإضافة الآتي:

// إضافة رتبة عضو مُخصَّصة
$result = add_role( 'client', __('عميل' ), array( ) );

هكذا أنشأت بإضافة ذلك النص البرمجي رتبة عضو جديدة (يمكنك العثور عليها في القائمة المنسدلة في صفحة أضف عضو جديد). لكن هذه الرتبة لا تمتلك صلاحيات بعد. لذا فالخطوة التالية بالطبع ستكون إضافة صلاحيات تفي بالمتطلبات التي ذكرناها سابقًا. فقط أضف نص المتتالية array إلى النص السابق الذي قمت بإدخاله في ملف functions.php.

// إضافة رتبة عضو مُخصَّصة
$result = add_role( 'client', __('عميل' ), array(
    'read' => true, // تسمح بصلاحية القراءة
    'edit_posts' => true, // تسمح للمستخدم بتعديل مقالاته الخاصة
    'edit_pages' => true, // تسمح للمستخدم بتعديل الصفحات
    'edit_others_posts' => true, // تسمح للمستخدم بتعديل مقالات الآخرين
    'create_posts' => true, // تسمح للمستخدم بإنشاء مقالات جديدة
    'manage_categories' => true, // تسمح للمستخدم بإدارة التصنيفات
    'publish_posts' => true, // تسمح للمستخدم بنشر المقالات، أو ستُحفظ كمسودّات
)
);

هذا سيعطينا الصلاحيات التي تمَكّن المستخدم من فعل ما يحتاجه، ولكننا ما زلنا بحاجة لحظر الصلاحيات التي قد تؤدي إلى سقوط الموقع. لذا سنضيف النص التالي:

// إضافة رتبة عضو مُخصَّصة

$result = add_role( 'client', __('عميل' ), array(
    'read' => true, //  تسمح بصلاحية القراءة
    'edit_posts' => true, // تسمح للمستخدم بتعديل مقالاته الخاصة
    'edit_pages' => true, // تسمح للمستخدم بتعديل الصفحات
    'edit_others_posts' => true, // تسمح للمستخدم بتعديل مقالات الآخرين
    'create_posts' => true, // تسمح للمستخدم بإنشاء مقالات جديدة
    'manage_categories' => true, // تسمح للمستخدم بإدارة التصنيفات
    'publish_posts' => true, // تسمح للمستخدم بنشر المقالات، أو ستبقى كمسودّات

    'edit_themes' => false, //  تمنع المستخدم من تعديل القوالب
    'install_plugins' => false, // لا يستطيع المستخدم تنصيب إضافات جديدة
    'update_plugin' => false, // لا يستطيع المستخدم تحديث الإضافات
    'update_core' => false // لا يستطيع المستخدم تحديث البنية الأساسية
)
);

كيف تتأكد أن رتبة العضو قد أضيفت بشكل صحيح

للتأكد من أن رتبة العضو تعمل جيدًا، سننشئ عضوًا جديدًا بالرتبة المذكورة، ثم نسجل الدخول إلى العضوية الجديدة ونلاحظ التغير الحاصل في الأدوات المتاحة في لوحة التحكم، وهذا بناءً على أيّ الصلاحيات منحتها وأيّهم منعتها. وتظهر الصورة بالأسفل ما يجب أن تراه إذا أضفت رتبة العضو كما فعلنا سابقًا.

custom-user-role_(1).thumb.png.02a12b3d9

كما ترى، الأدوات المتاحة لهذا العضو قد قلت كثيرًا نتيجة للصلاحيات التي تم منحها ومنعها. يمكنك أن ترتاح الآن كمطور/مدير للموقع أنك لن تستقبل رسالة من العميل يقول فيها "لا أعرف ماذا حدث، ولكن فجأة لم يعد موقعي موجوداً".

مترجم بتصرف من مقال How to Create Custom User Roles in WordPress لكاتبه Al Davis.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...