مدل دسترسی پرونوبت و ساخت نقشهای محدود واقعی با capability های `pronobat_view_reports` و `pronobat_staff_self`.
در این راهنما مدل دسترسی پرونوبت را میبینیم و یک نقش وردپرسی محدود میسازیم که با capability های واقعی افزونه کار میکند.
دسترسیها در پرونوبت درشتدانه هستند. ثابتهای اصلی:
| Capability | اجازه میدهد |
|---|---|
pronobat_manage | مدیریت کامل — نوبتها، سرویسها، کارمندان، مشتریان، اعلانها و تنظیمات |
pronobat_staff_self | فقط مشاهدهی نوبتهای خودِ کارمند |
pronobat_view_reports | مشاهدهی گزارشها و داشبورد |
pronobat_view_payments | مشاهدهی تراکنشهای پرداخت (فقط خواندن) |
pronobat_manage_payments | استرداد وجه |
pronobat_finance | دسترسی مالی (پیشفرض روی نقش Editor) |
نکتهی مهم: ویرایش نوبتها و ویرایش تنظیمات هر دو با همان pronobat_manage کنترل میشوند. پس نمیتوان نقشی ساخت که نوبتها را ویرایش کند اما به تنظیمات دسترسی نداشته باشد. برای دسترسی محدود، از نقشهای فقطخواندنی یا نقش آمادهی «کارمند» استفاده کنید.
pronobat_manager) — همهچیز بهجز استرداد وجه.pronobat_staff) — فقط مشاهدهی نوبتهای خودش (pronobat_staff_self).اگر یکی از این دو نیاز شما را برآورده میکند، کافی است نقش کاربر را در کاربران ← همه کاربران به آن تغییر دهید.
فرض کنید میخواهید کسی فقط بتواند گزارشها و تراکنشها را ببیند، بدون اجازهی تغییر چیزی. این جداسازی شدنی است.
کد زیر را در functions.php تم خود (یا یک افزونهی سفارشی) اضافه کنید:
/**
* ساخت نقش «دستیار گزارشها» با دسترسی فقطخواندنی
* این تابع یک بار اجرا میشود (هنگام فعالسازی تم یا افزونه)
*/
function my_create_pronobat_reports_assistant_role(): void {
if ( get_role( 'pronobat_reports_assistant' ) ) {
return; // اگر نقش از قبل وجود داشت، چیزی نساز
}
add_role(
'pronobat_reports_assistant',
'دستیار گزارشها',
[
'read' => true, // دسترسی پایه وردپرس
'pronobat_view_reports' => true, // مشاهده گزارشها و داشبورد
'pronobat_view_payments'=> true, // مشاهده تراکنشها (فقط خواندن)
]
);
تابع add_role فقط یک بار نیاز به اجرا دارد. وردپرس نقشها را در پایگاه داده ذخیره میکند، پس نیازی به تکرار نیست.
اگر میخواهید دسترسی فقطخواندنی پرونوبت را به یک نقش موجود (مثلاً Editor) بدهید:
function my_grant_pronobat_caps_to_editor(): void {
$role = get_role( 'editor' );
if ( ! $role ) {
return;
}
$role->add_cap( 'pronobat_view_reports' );
$role->add_cap( 'pronobat_view_payments' );
}
add_action( 'init', 'my_grant_pronobat_caps_to_editor' );در وردپرس، به کاربران ← همه کاربران بروید.
روی نام کاربر کلیک کنید.
فیلد نقش را به نقش موردنظر (مثلاً دستیار گزارشها) تغییر دهید.
بهروزرسانی کاربر را بزنید.
| Capability | دستیار گزارشها | کارمند |
|---|---|---|
pronobat_view_reports | ✅ | — |
pronobat_view_payments | ✅ | — |
pronobat_staff_self | — | ✅ |
pronobat_manage | ❌ (دسترسی کامل) | ❌ |
pronobat_manage_payments | ❌ | ❌ |
remove_role( 'pronobat_reports_assistant' );یک نمونه کامل و زنده از افزونه با دادههای واقعی — بدون نیاز به نصب.