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

كيف أضيف مستخدم على ووردبريس بصلاحيات معينة؟

محمد بوسكوري

السؤال

كما هو معلوم يتوفر الأدمن على عدة صلاحيات داخل الموقع، وعلى موقع مبني بووردبريس أحاول إنشاء إضافة plugin تسمح لمدير الموقع بعدة صلاحيات، بالشكل التالي:

function wf_getManagerCaps() {
    return array(
         "add_users" => true,
        "create_users" => true,
        "edit_users" => true,
        "list_users" => true,
        "promote" => true,
        "remove" => true,
        "delete" => true

       
    );
}

add_role("wf_manager", "WF Manager", wf_getManagerCaps());

 

وكوظيفة تسمح بتغيير صلاحيات المستخدم، اعتمدت الكود التالي:

 ببfunction wf_limitAvailableRoles( $roles ){
    $user = wp_get_current_user();
    if (in_array( WF_MANAGER_ROLE_SLUG, $user->roles)) {
        $roles = array(
            array(
                "name" => "wf_manager",
                "capabilities" => wf_getManagerCaps(),
            ),
            array(
                "name" => "wf_employee",
                "capabilities" => wf_getEmployeeCaps(),
            ),
        );
    }

    return $roles;
}
add_filter( 'editable_roles', 'wf_limitAvailableRoles' );

لكن المشكل هو عند إضافة مستخدم جديد يظهر بصلاحيات 'None'، لا أدري أين هو الخطأ؟

تم التعديل في بواسطة محمد بوسكوري
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

المشكل الأساسي هو عند استخدام الدالة داخل editable_roles.

أهداف السكريبت:

  • السماح بإضافة مدراء الموقع والمستخدمين الجدد.
  • السماح للمدراء بإضافة مشغلين جدد.

وسيكون الحل هو عبارة تصحيح للدالة الأصلية ، التي هي كالآتي:

function wf_limitAvailableRoles( $roles ){
    $user = wp_get_current_user();
    if (in_array( 'wf_operator', $user->roles)) {
        $roles = array(
            array(
                "name" => "wf_manager",
                "capabilities" => wf_getManagerCaps(),
            ),
            array(
                "name" => "wf_employee",
                "capabilities" => wf_getEmployeeCaps(),
            ),
        );
    }

    return $roles;
}
add_filter( 'editable_roles', 'wf_limitAvailableRoles' );

يمكنك الاطلاع على codex لإجراء بعض التعديلات على roles$:

array(
    array(
        "name' => [role name]
        "capabilities" => [capabilities]
    ),

    array(
        "name' => [role name]
        "capabilities" => [capabilities]
    )
);

وهذا ما تحتاج إلى استعماله بالضبط:

array(
    [role_slug] => array(
        "name' => [role name]
        "capabilities" => [capabilities]
    ),

    [role_slug] => array(
        "name' => [role name]
        "capabilities" => [capabilities]
    ),
);

 

تم التعديل في بواسطة E.Nourddine
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...