تستخدم ووردبريس مفهوم الأدوار (Roles)، المصممة لمنح مالك الموقع القدرة على التحكم في ما يمكن للمستخدمين فعله وما لا يمكنهم فعله داخل الموقع. يمكن لمالك الموقع إدارة صلاحيات وصول المستخدمين لمهام مثل كتابة وتعديل المقالات، إنشاء الصفحات، إنشاء التصنيفات، مراجعة التعليقات، إدارة الإضافات، إدارة القوالب، وإدارة المستخدمين الآخرين، وذلك عن طريق تعيين دور محدد لكل مستخدم[cite: 1].
تحتوي ووردبريس على ستة أدوار مُعرفة مسبقاً: المدير العام (Super Admin)، المدير (Administrator)، المحرر (Editor)، المؤلف (Author)، المساهم (Contributor) والمشترك (Subscriber). يُسمح لكل دور تنفيذ مجموعة من المهام تسمى الصلاحيات (Capabilities). هناك العديد من الصلاحيات بما في ذلك “publish_posts“، “moderate_comments“، و“edit_users“. يتم تعيين مجموعة افتراضية من الصلاحيات مسبقاً لكل دور، ولكن يمكن تعيين صلاحيات أخرى أو إزالتها باستخدام دالتي add_cap() و remove_cap(). يمكن إدخال أدوار جديدة أو إزالتها باستخدام دالتي add_role() و remove_role()[cite: 1].
يسمح دور المدير العام (Super Admin) للمستخدم بأداء جميع الصلاحيات الممكنة. يمتلك كل دور من الأدوار الأخرى عددًا تنازليًا من الصلاحيات المسموح بها. على سبيل المثال، يمتلك دور المشترك (Subscriber) صلاحية “read” فقط. لا ينبغي اعتبار دور معين أعلى شأنًا من دور آخر؛ بل يجب اعتبار أن الأدوار تحدد مسؤوليات المستخدم داخل الموقع[cite: 1].
ملخص الأدوار
- المدير العام (Super Admin) – شخص لديه حق الوصول إلى ميزات إدارة شبكة المواقع وجميع الميزات الأخرى. راجع مقالة إنشاء شبكة (Create a Network)[cite: 1].
- المدير (Administrator) (المُعرف (slug): ‘administrator’) – شخص لديه حق الوصول إلى جميع ميزات الإدارة داخل موقع واحد[cite: 1].
- المحرر (Editor) (المُعرف (slug): ‘editor’) – شخص يمكنه نشر وإدارة المقالات بما في ذلك مقالات المستخدمين الآخرين[cite: 1].
- المؤلف (Author) (المُعرف (slug): ‘author’) – شخص يمكنه نشر وإدارة مقالاته الخاصة[cite: 1].
- المساهم (Contributor) (المُعرف (slug): ‘contributor’) – شخص يمكنه كتابة وإدارة مقالاته الخاصة ولكن لا يمكنه نشرها[cite: 1].
- المشترك (Subscriber) (المُعرف (slug): ‘subscriber’) – شخص يمكنه إدارة ملفه الشخصي فقط[cite: 1].
عند تثبيت ووردبريس، يتم إنشاء حساب مدير (Administrator) تلقائيًا[cite: 1].
يمكن تعيين الدور الافتراضي للمستخدمين الجدد في شاشات الإدارة (Administration Screens) > الإعدادات (Settings) > عام (General)[cite: 1].
الأدوار
يُعرف الدور مجموعة من المهام المسموح للمستخدم المُعين له الدور بتنفيذها. على سبيل المثال، يغطي دور المدير العام (Super Admin) كل مهمة ممكنة يمكن تنفيذها داخل شبكة (Network) من مواقع ووردبريس الافتراضية. يقصر دور المدير (Administrator) المهام المسموح بها على تلك التي تؤثر على موقع واحد فقط. من ناحية أخرى، يتيح دور المؤلف (Author) تنفيذ مجموعة فرعية صغيرة فقط من المهام[cite: 1].
تُردد الأقسام التالية الأدوار الافتراضية وصلاحياتها:
المدير العام (Super Admin)
يتمتع مديرو شبكات المواقع المتعددة (Multisite Super Admins) افتراضيًا بجميع الصلاحيات. لذلك فإن الصلاحيات الخاصة بالشبكات المتعددة التالية متاحة فقط للمسؤولين العامين:
- create_sites
- delete_sites
- manage_network
- manage_sites
- manage_network_users
- manage_network_plugins
- manage_network_themes
- manage_network_options
- upgrade_network
- setup_network
في حالة تثبيت ووردبريس لموقع واحد، يكون المديرون بمثابة مديرين عامين (Super Admins) فعليًا. على هذا النحو، هم الوحيدون الذين يمكنهم الوصول إلى صلاحيات الإدارة الإضافية[cite: 1].
المدير (Administrator)
تختلف صلاحيات المديرين بين تثبيتات ووردبريس لموقع واحد وتثبيتات الشبكات المتعددة (Multisite). يمتلك جميع المديرين الصلاحيات التالية[cite: 1]:
- activate_plugins
- delete_others_pages
- delete_others_posts
- delete_pages
- delete_posts
- delete_private_pages
- delete_private_posts
- delete_published_pages
- delete_published_posts
- edit_dashboard
- edit_others_pages
- edit_others_posts
- edit_pages
- edit_posts
- edit_private_pages
- edit_private_posts
- edit_published_pages
- edit_published_posts
- edit_theme_options
- export
- import
- list_users
- manage_categories
- manage_links
- manage_options
- moderate_comments
- promote_users
- publish_pages
- publish_posts
- read_private_pages
- read_private_posts
- read
- remove_users
- switch_themes
- upload_files
- customize
- delete_site
صلاحيات الإدارة الإضافية
فقط مديري تثبيتات الموقع الواحد يمتلكون الصلاحيات التالية. في بيئة الشبكات المتعددة (Multisite)، يمتلك المدير العام وحده هذه الصلاحيات[cite: 1]:
- update_core
- update_plugins
- update_themes
- install_plugins
- install_themes
- delete_themes
- delete_plugins
- edit_plugins
- edit_themes
- edit_files
- edit_users
- add_users
- create_users
- delete_users
- unfiltered_html
المحرر (Editor)
- delete_others_pages
- delete_others_posts
- delete_pages
- delete_posts
- delete_private_pages
- delete_private_posts
- delete_published_pages
- delete_published_posts
- edit_others_pages
- edit_others_posts
- edit_pages
- edit_posts
- edit_private_pages
- edit_private_posts
- edit_published_pages
- edit_published_posts
- manage_categories
- manage_links
- moderate_comments
- publish_pages
- publish_posts
- read
- read_private_pages
- read_private_posts
- unfiltered_html (غير متاح في الشبكات المتعددة Multisite)
- upload_files
المؤلف (Author)
المساهم (Contributor)
المشترك (Subscriber)
حالات خاصة
الصلاحيات التالية تعتبر حالات خاصة:
- unfiltered_upload – هذه الصلاحية غير متوفرة لأي دور افتراضيًا (بما في ذلك المديرون العامون Super Admins). يجب تفعيل هذه الصلاحية عن طريق تعريف الثابت التالي:
define( 'ALLOW_UNFILTERED_UPLOADS', true );
عند تعريف هذا الثابت، يمكن منح جميع الأدوار في تثبيت موقع واحد صلاحية unfiltered_upload، ولكن يمكن منح الصلاحية فقط للمديرين العامين (Super Admins) في تثبيت الشبكات المتعددة (Multisite).
جدول مقارنة الصلاحيات والأدوار
لاحظ أن صلاحيات المديرين تختلف بين تثبيتات المواقع الفردية وتثبيتات ووردبريس الشبكات المتعددة (Multisite)، كما هو موضح أعلاه.
| الصلاحية | المدير العام | المدير | المحرر | المؤلف | المساهم | المشترك |
|---|---|---|---|---|---|---|
| create_sites | نعم | لا | لا | لا | لا | لا |
| delete_sites | نعم | لا | لا | لا | لا | لا |
| manage_network | نعم | لا | لا | لا | لا | لا |
| manage_sites | نعم | لا | لا | لا | لا | لا |
| manage_network_users | نعم | لا | لا | لا | لا | لا |
| manage_network_plugins | نعم | لا | لا | لا | لا | لا |
| manage_network_themes | نعم | لا | لا | لا | لا | لا |
| manage_network_options | نعم | لا | لا | لا | لا | لا |
| upload_plugins | نعم | لا | لا | لا | لا | لا |
| upload_themes | نعم | لا | لا | لا | لا | لا |
| upload_network | نعم | لا | لا | لا | لا | لا |
| upgrade_network | نعم | لا | لا | لا | لا | لا |
| setup_network | نعم | لا | لا | لا | لا | لا |
| activate_plugins | نعم | نعم (موقع واحد أو مفعل بواسطة إعدادات الشبكة) |
لا | لا | لا | لا |
| create_users | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| delete_plugins | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| delete_themes | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| delete_users | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| edit_files | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| edit_plugins | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| edit_theme_options | نعم | نعم | لا | لا | لا | لا |
| edit_themes | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| edit_users | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| export | نعم | نعم | لا | لا | لا | لا |
| import | نعم | نعم | لا | لا | لا | لا |
| install_plugins | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| install_themes | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| list_users | نعم | نعم | لا | لا | لا | لا |
| manage_options | نعم | نعم | لا | لا | لا | لا |
| promote_users | نعم | نعم | لا | لا | لا | لا |
| remove_users | نعم | نعم | لا | لا | لا | لا |
| switch_themes | نعم | نعم | لا | لا | لا | لا |
| update_core | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| update_plugins | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| update_themes | نعم | نعم (موقع واحد) | لا | لا | لا | لا |
| edit_dashboard | نعم | نعم | لا | لا | لا | لا |
| customize | نعم | نعم | لا | لا | لا | لا |
| delete_site | نعم | نعم | لا | لا | لا | لا |
| moderate_comments | نعم | نعم | نعم | لا | لا | لا |
| manage_categories | نعم | نعم | نعم | لا | لا | لا |
| manage_links | نعم | نعم | نعم | لا | لا | لا |
| edit_others_posts | نعم | نعم | نعم | لا | لا | لا |
| edit_pages | نعم | نعم | نعم | لا | لا | لا |
| edit_others_pages | نعم | نعم | نعم | لا | لا | لا |
| edit_published_pages | نعم | نعم | نعم | لا | لا | لا |
| publish_pages | نعم | نعم | نعم | لا | لا | لا |
| delete_pages | نعم | نعم | نعم | لا | لا | لا |
| delete_others_pages | نعم | نعم | نعم | لا | لا | لا |
| delete_published_pages | نعم | نعم | نعم | لا | لا | لا |
| delete_others_pos | نعم | نعم | نعم | لا | لا | لا |
| delete_private_posts | نعم | نعم | نعم | لا | لا | لا |
| edit_private_posts | نعم | نعم | نعم | لا | لا | لا |
| read_private_posts | نعم | نعم | نعم | لا | لا | لا |
| delete_private_pages | نعم | نعم | نعم | لا | لا | لا |
| edit_private_pages | نعم | نعم | نعم | لا | لا | لا |
| read_private_pages | نعم | نعم | نعم | لا | لا | لا |
| unfiltered_html | نعم | نعم (موقع واحد) | نعم (موقع واحد) | لا | لا | لا |
| unfiltered_html | نعم | نعم | نعم | لا | لا | لا |
| edit_published_posts | نعم | نعم | نعم | نعم | لا | لا |
| upload_files | نعم | نعم | نعم | نعم | لا | لا |
| publish_posts | نعم | نعم | نعم | نعم | لا | لا |
| delete_published_posts | نعم | نعم | نعم | نعم | لا | لا |
| edit_posts | نعم | نعم | نعم | نعم | نعم | لا |
| delete_posts | نعم | نعم | نعم | نعم | نعم | لا |
| read | نعم | نعم | نعم | نعم | نعم | نعم |
الصلاحيات
صلاحيات محرر الموقع (Site Editor)
محرر الموقع متاح عندما يكون قالب الكتل (block theme) مفعلًا، ويتيح للمستخدمين إدارة قوالب الموقع، أجزاء القوالب، التنسيقات، القوائم، والمحتوى من واجهة تحرير واحدة[cite: 1].
يعتمد الوصول إلى ميزات محرر الموقع على الصلاحيات المعينة للمستخدم الحالي. قد تكون الصلاحيات التالية ذات صلة عند إنشاء دور مخصص يحتاج إلى الوصول إلى محرر الموقع[cite: 1]:
| الصلاحية | الوصف |
|---|---|
edit_theme_options |
يمنح حق الوصول إلى محرر الموقع وقائمة التنقل الخاصة به. |
edit_posts |
يسمح للمستخدمين بتعديل المقالات، وهو مطلوب لإدارة القوالب. |
edit_pages |
يسمح للمستخدمين بتعديل الصفحات، وهو مطلوب لإدارة قوالب الصفحات. |
edit_others_posts |
يسمح للمستخدمين بتعديل مقالات الآخرين، وهو مطلوب لإدارة القوالب. |
read |
يسمح للمستخدمين بمعاينة الموقع، وهو مطلوب لمعاينة التغييرات. |
upload_files |
يسمح للمستخدمين برفع الوسائط، وهو مطلوب لإضافة الصور والملفات. |
edit_theme_options هي الصلاحية الأساسية التي تستخدمها ووردبريس عند تحديد ما إذا كان بإمكان المستخدم الوصول إلى القوالب وإدارتها من خلال محرر الموقع. قد تكون هناك حاجة لصلاحيات أخرى اعتمادًا على أنواع المحتوى المتوقع أن يقوم المستخدم بتعديلها[cite: 1].
إنشاء دور محرر موقع مخصص
يمكن إنشاء دور مخصص بالصلاحيات المطلوبة للمهام التي يجب أن يكون المستخدم قادرًا على أداها. على سبيل المثال[cite: 1]:
function wporg_add_site_editor_role() {
add_role(
'site_editor',
__( 'محرر الموقع', 'textdomain' ),
array(
'read' => true,
'edit_theme_options' => true,
'edit_posts' => true,
'edit_pages' => true,
'edit_others_posts' => true,
'upload_files' => true,
)
);
}
add_action( 'init', 'wporg_add_site_editor_role' );
يمكن أيضًا إضافة صلاحيات إلى دور موجود باستخدام WP_Role::add_cap()[cite: 1]:
function wporg_add_site_editor_capabilities() {
$role = get_role( 'editor' );
if ( $role ) {
$role->add_cap( 'edit_theme_options' );
}
}
add_action( 'init', 'wporg_add_site_editor_capabilities' );
عند إضافة صلاحيات إلى دور موجود، ضع في اعتبارك الأذونات الأوسع التي توفرها كل صلاحية. على سبيل المثال، edit_theme_options لا تقتصر حصريًا على محرر الموقع وقد تمنح حق الوصول إلى وظائف إدارية أخرى تتعلق بالقوالب[cite: 1].
فحوصات صلاحيات واجهة برمجة التطبيقات REST API
يستخدم محرر الموقع واجهة برمجة تطبيقات ووردبريس REST API لاسترجاع وتحديث القوالب، أجزاء القوالب، الصفحات، بيانات التنقل، الأنماط، وغيرها من المعلومات[cite: 1].
بالنسبة لنقاط نهاية القوالب وأجزاء القوالب، تتحقق ووردبريس مما إذا كان المستخدم الحالي يمتلك صلاحية edit_theme_options. قد يتلقى المستخدم الذي ليس لديه هذه الصلاحية خطأ تفويض عندما يحاول محرر الموقع الوصول إلى نقاط النهاية هذه[cite: 1].
يمكن لنقاط نهاية REST API الأخرى إجراء فحوصات الصلاحيات الخاصة بها. على سبيل المثال، قد تتطلب نقاط النهاية المتعلقة بالمقالات أو الصفحات صلاحيات مثل[cite: 1]:
edit_postsedit_pagesedit_others_posts- صلاحيات أخرى خاصة بالعنصر بناءً على العملية المطلوبة
إذا كان الدور المخصص يمكنه فتح محرر الموقع ولكن بعض الأقسام تفشل في التحميل أو الحفظ، تحقق من أدوات المطور في المتصفح لمعرفة طلبات REST API التي تُرجع استجابات 401 Unauthorized أو 403 Forbidden[cite: 1].
غالبًا ما تتضمن استجابة REST API رمز خطأ ورسالة تشير إلى نوع الإذن الذي فشل. يمكن أن يساعد ذلك في تحديد ما إذا كان الدور يفتقر إلى صلاحية مطلوبة بواسطة نقطة النهاية تلك[cite: 1].
امنح فقط الصلاحيات المطلوبة للمهام التي يُقصد أن يؤديها الدور[cite: 1].
switch_themes
- منذ الإصدار 2.0
- يسمح بالوصول إلى خيارات شاشات الإدارة (Administration Screens):
- المظهر (Appearance)
- المظهر > القوالب (Appearance > Themes)
edit_themes
- منذ الإصدار 2.0
- يسمح بالوصول إلى المظهر > محرر القوالب (Theme Editor) لتعديل ملفات القالب.
edit_theme_options
بينما تمنح هذه الصلاحية حق الوصول إلى محرر الموقع، فقد تكون هناك حاجة لصلاحيات إضافية للحصول على الوظائف الكاملة. على سبيل المثال، قد يحتاج المستخدمون أيضًا إلى edit_posts، وedit_pages، وedit_others_posts للاستفادة الكاملة من ميزات محرر الموقع.
- منذ الإصدار 3.0
- يسمح للمستخدمين بتعديل خيارات القوالب، بما في ذلك الوصول إلى محرر الموقع في بيئات التحرير الكامل للموقع (FSE) ويسمح بالوصول إلى خيارات شاشات الإدارة (Administration Screens):
- المظهر > الودجت (Widgets)
- المظهر > القوائم (Menus)
- المظهر > تخصيص (Customize) إذا كانت مدعومة من القالب الحالي
- المظهر > الترويسة (Header)
install_themes
- منذ الإصدار 2.8
- يسمح بالوصول إلى خيارات شاشات الإدارة (Administration Screens):
- المظهر > إضافة قوالب جديدة
activate_plugins
- منذ الإصدار 2.0
- يسمح بالوصول إلى خيارات شاشات الإدارة (Administration Screens):
edit_plugins
- منذ الإصدار 2.0
- يسمح بالوصول إلى خيارات شاشات الإدارة (Administration Screens):