نحوه ثبت اندپوینتهای سفارشی صفحات CRM و اتصال آنها به کلاسهای Controller PHP.
مرور کلی
فیلتر `la24_endpoints` slug های URL را به کلاسهای Controller PHP متصل میکند. وقتی کاربری به یک اندپوینت در پنل CRM هدایت میشود، LA24Core کلاس Controller مرتبط را نمونهسازی کرده و متد `content()` آن را برای رندر صفحه فراخوانی میکند.
امضای هوک
php
apply_filters( 'la24_endpoints', array $endpoints );
**نوع:** Filter
**پارامترها:** `$endpoints` (آرایه) — رجیستری اندپوینتهای فعلی
**بازگشتی:** آرایه — رجیستری اندپوینتهای تغییریافته
ثبت اندپوینت
php
add_filter( 'la24_endpoints', function ( $endpoints ) {
$endpoints['MyCrmPage'] = array(
'name' => __( 'داشبورد CRM', 'my-crm-ext' ),
'callback' => '\MyPlugin\Controllers\MyCrmPage',
);
$endpoints['MyCrmReports'] = array(
'name' => __( 'گزارشها', 'my-crm-ext' ),
'callback' => '\MyPlugin\Controllers\MyCrmReports',
);
return $endpoints;
} );
کلاس Controller در آدرس `\MyPlugin\Controllers\MyCrmPage` باید از `BaseViewController` ارث ببرد. برای API کامل Controller به راهنمای **ساخت Controller** مراجعه کنید.
فیلدهای اندپوینت
| فیلد | نوع | توضیح |
|---|---|---|
| کلید (کلید آرایه) | string | slug URL؛ به عنوان شناسه اندپوینت استفاده میشود (مثلاً `MyCrmPage`) |
| `name` | string | برچسب قابل خواندن برای انسان |
| `callback` | string | نام کامل کلاس Controller (با namespace) |
Capability خودکار
برای هر اندپوینت ثبتشده، LA24Core بهصورت خودکار یک capability با نام زیر میسازد:
javascript
la24_{slug_lowercase}_access
برای مثال، ثبت `MyCrmPage` باعث ایجاد `la24_mycrmpage_access` میشود. این capability را درون Controller خود بررسی کنید تا کنترل دسترسی اعمال شود:
php
if ( ! la24_user_can( get_current_user_id(), 'la24_mycrmpage_access' ) ) {
la24_get_template( 'AccessDenied.php' );
return;
}
دریافت URL اندپوینت
از تابع کمکی زیر برای ساخت URL هر اندپوینت ثبتشده استفاده کنید:
php
// URL ساده
$url = la24_get_permalink_panel( 'MyCrmPage' );
// با پارامترهای query
$url = la24_get_permalink_panel( 'MyCrmPage/?user_id=42' );
این تابع همیشه URL صحیح پنل را بدون توجه به تنظیمات permalink برمیگرداند.
اتصال آیتمهای منو به اندپوینتها
آیتم منو ثبتشده در `la24_dashboard_menu_items` بهصورت خودکار به اندپوینت لینک میشود، زمانی که کلید آرایهاش با کلید اندپوینت یکسان باشد:
php
// کلید اندپوینت: 'MyCrmPage'
$endpoints['MyCrmPage'] = array( ... );
// کلید آیتم منو هم 'MyCrmPage' است — اتصال خودکار انجام میشود
$menus['MyCrmPage'] = array(
'name' => __( 'داشبورد CRM', 'my-crm-ext' ),
'parent' => 'my_crm_section',
...
);