عند كتابة ملحقات WordPress ، غالبًا ما تكون هناك حاجة لإعداد خيارات تتيح للأدوار على الموقع الوصول إلى وظائف أو محتوى معين. للقيام بذلك ، يحتاج برنامج تطوير المكونات الإضافية إلى جلب قائمة الأدوار الموجودة على الموقع لاستخدامها في الخيار. نظرًا لأنه يمكن إنشاء الأدوار المخصصة ، لا يمكننا افتراض أن الأدوار الافتراضية هي الوحيدة المتاحة.
ما هي أفضل طريقة لجلب القائمة؟
يتم تخزين الأدوار في المتغير العام $wp_roles
.
الوظيفة المثالية هي get_editable_roles()
from /wp-admin/includes/user.php
function get_editable_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$editable_roles = apply_filters('editable_roles', $all_roles);
return $editable_roles;
}
الجزء "قابل للتعديل" لأنه يوفر إضافات أخرى فرصة لتصفية القائمة في حالة امتياز شخص ما بخلاف المشرف 'edit_users'
(وبالتالي يحتاج "المسؤول" إلى إزالته من القائمة ، وإلا يمكن للمستخدم إنشاء نفسه مشرف). المكونات الإضافية لإدارة الأدوار المستخدمة لإنشاء أدوار مخصصة هي تلك التي تستخدم عامل التصفية هذا. بخلاف ذلك ، تكون هذه الوظيفة بشكل أساسي get_roles()
(غير موجودة).
من المفترض أن المكون الإضافي الخاص بك لن يعرض سوى صفحة الإعدادات المعنية لشخص لديه إمكانيات على مستوى المشرف مثل 'manage_options'
وهو في الأساس مسؤول لديه حق الوصول إلى جميع الأدوار ، لذلك يجب ألا يؤثر الفلتر عليك.
هناك أيضًا wp_dropdown_roles()
والتي تمنحك الأدوار كحقول <option>
لقائمة <select>
(على الرغم من أن خانات الاختيار من المحتمل أن تعمل بشكل أفضل في العديد من السيناريوهات حيث تختار من يمكنه الوصول إلى شيء ما).
جرب هذا:
function get_role_names() {
global $wp_roles;
if ( ! isset( $wp_roles ) )
$wp_roles = new WP_Roles();
return $wp_roles->get_names();
}
PS هيه ، غاب عن هذا التفسير والرد ، سريع جدا لي :)
بالنسبة لأولئك الذين لديهم موقع متعدد اللغات ، وظيفة
function wp_roles_array() {
$editable_roles = get_editable_roles();
foreach ($editable_roles as $role => $details) {
$sub['role'] = esc_attr($role);
$sub['name'] = translate_user_role($details['name']);
$roles[] = $sub;
}
return $roles;
}
إرجاع صفيف مترجمة مثل هذا (أسماء الأدوار باللغة السلوفاكية):
Array
(
[0] => Array
(
[role] => administrator
[name] => Administrátor
)
[1] => Array
(
[role] => editor
[name] => Editor
)
[2] => Array
(
[role] => author
[name] => Autor
)
[3] => Array
(
[role] => contributor
[name] => Prispievateľ
)
)
إليك كيف يمكنك العثور على قائمة الأدوار دون أي إضافات أو وظيفة http://screencast.com/t/uaWsGLAR3Sh