it-swarm.asia

الحصول على قائمة الأدوار المتاحة حاليا على موقع وورد؟

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

ما هي أفضل طريقة لجلب القائمة؟

39
jerclarke

يتم تخزين الأدوار في المتغير العام $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>(على الرغم من أن خانات الاختيار من المحتمل أن تعمل بشكل أفضل في العديد من السيناريوهات حيث تختار من يمكنه الوصول إلى شيء ما).

45
jerclarke

جرب هذا:

function get_role_names() {

global $wp_roles;

if ( ! isset( $wp_roles ) )
    $wp_roles = new WP_Roles();

return $wp_roles->get_names();
}

PS هيه ، غاب عن هذا التفسير والرد ، سريع جدا لي :)

12
Rarst

بالنسبة لأولئك الذين لديهم موقع متعدد اللغات ، وظيفة

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ľ
        )
)
0
Jasom Dotnet

إليك كيف يمكنك العثور على قائمة الأدوار دون أي إضافات أو وظيفة http://screencast.com/t/uaWsGLAR3Sh

0
Manuel Costales