مرور کلی برای توسعهدهندگانی که میخواهند افزونههای وردپرس سفارشی بنویسند و قابلیتهای بیشتری به اکوسیستم CRM مبتنی بر LA24Core اضافه کنند، بههمراه حداقل ساختار پایه لازم برای ساخت چنین افزونهای.
LA24Core چیست؟
LA24Core یک افزونه وردپرسی ماژولار و سازمانی است که به عنوان پایه اکوسیستم CRM عمل میکند. معماری این سیستم بر اساس هوکهای وردپرس طراحی شده تا توسعهدهندگان بتوانند بدون دستکاری کد اصلی، قابلیتهای جدید اضافه کنند.
هر ویژگی اصلی — آیتمهای منو، صفحات CRM، سطوح دسترسی، ویجتهای داشبورد، تبهای تاریخچه پروفایل و پنلهای تنظیمات — از طریق فیلترها و اکشنهایی که LA24Core فراهم میکند ثبت میشوند.
نیازی به دستکاری کد اصلی LA24Core نیست. کافی است یک افزونه مستقل وردپرس بسازید، هوکهای مناسب را وصل کنید و LA24Core بهصورت خودکار افزودنیهای شما را شناسایی میکند.

پیشنیازها
- PHP 8.0 یا بالاتر
- وردپرس 6.0 یا بالاتر
- LA24Core نصب و فعال شده
- آشنایی پایه با هوکهای وردپرس (Action و Filter)
فلسفه توسعه
LA24Core از اصل **هوکمحور** پیروی میکند:
- تمام ثبتنامها در زمان `plugins_loaded` از طریق هوکهای وردپرس انجام میشود
- نیازی به override فایلها یا دستکاری کد اصلی نیست
- هر افزونه توسعه یک پلاگین وردپرسی کاملاً مستقل است
- بررسی وابستگی در زمان اجرا از طریق وجود تابع `la24_get_option`
معماری کلی
javascript
la24core/
├── includes/
│ ├── helpers/la24-core-functions.php ← توابع کمکی اصلی
│ ├── abstracts/BaseViewController.php ← کلاس پایه برای Controller ها
│ ├── plugins/ ← ماژولهای زیرسیستم (ums, email, knowledge …)
│ └── LA24Core.php ← مدیریت مرکزی
└── src/plugins/ ← نقاط ورود React فرانتاند
مفاهیم کلیدی
| مفهوم | نحوه عملکرد |
|---|---|
| آیتمهای منو | ثبت از طریق اکشن `la24_dashboard_menu_items` + سینگلتون `LA24()->Menu()` |
| صفحات CRM | ثبت از طریق فیلتر `la24_endpoints`؛ هر اندپوینت به یک کلاس Controller متصل است |
| دسترسیها | ثبت از طریق فیلتر `la24_capability`؛ در رابط مدیریت نقشها نمایش داده میشود |
| ویجتهای داشبورد | ثبت از طریق فیلتر `la24_widgets`؛ کلاسهای ویجت از `\LoyalAxis\classes\services\widgets\Widget` ارثبری میکنند و برای افزونههای سفارشی از شناسه عددی `900` به بالا استفاده میکنند |
| تبهای تاریخچه پروفایل | ثبت از طریق فیلتر `la24_history_user_profile`؛ هر تب یک Controller دارد |
| پنلهای تنظیمات | ثبت از طریق فیلتر `la24_register_setting`؛ هر پنل یک کلاس Settings است |
ساختار فایلهای افزونه
هر افزونهای که LA24Core را گسترش میدهد، یک پلاگین وردپرسی استاندارد است. این افزونه با اتصال callback هایش به هوکهای LA24Core، قابلیتهای جدید اضافه میکند. ساختار پایه زیر، حداقل کد لازم برای ساخت هر نوع افزونهای را نشان میدهد.
یک پوشه جدید در مسیر `wp-content/plugins/` بسازید:
javascript
my-crm-extension/
├── my-crm-extension.php ← فایل اصلی افزونه (هدر وردپرس)
└── includes/
└── class-my-crm-hook.php ← کلاس ثبت هوکهافایل اصلی افزونه
`my-crm-extension.php`:
php
<?php
/**
* Plugin Name: My CRM Extension
* Plugin URI: https://example.com
* Description: افزودن قابلیتهای سفارشی به LA24Core CRM
* Version: 1.0.0
* Author: نام شما
* Text Domain: my-crm-ext
*/
defined( 'ABSPATH' ) || exit;
define( 'MY_CRM_EXT_PATH', plugin_dir_path( __FILE__ ) );
define( 'MY_CRM_EXT_URL', plugin_dir_url( __FILE__ ) );
add_action( 'plugins_loaded', function () {
// فقط در صورتی بارگذاری شود که LA24Core فعال باشد
if ( ! function_exists( 'la24_get_option' ) ) {
return;
}
require_once MY_CRM_EXT_PATH . 'includes/class-my-crm-hook.php';
new My_CRM_Hook();
} );کلاس ثبت هوکها
`includes/class-my-crm-hook.php`:
php
<?php
defined( 'ABSPATH' ) || exit;
class My_CRM_Hook {
public function __construct() {
add_action( 'la24_dashboard_menu_items', array( $this, 'register_menu_items' ) );
add_filter( 'la24_endpoints', array( $this, 'register_endpoints' ), 10 );
add_filter( 'la24_capability', array( $this, 'register_capabilities' ), 10 );
add_filter( 'la24_widgets', array( $this, 'register_widgets' ), 10 );
add_filter( 'la24_groups_permission', array( $this, 'register_permission_groups' ), 10 );
add_filter( 'la24_register_setting', array( $this, 'register_settings' ), 10 );
add_filter( 'la24_history_user_profile', array( $this, 'register_profile_history_tabs' ), 10 );
}
// هر متد در راهنمای بخش مربوطه توضیح داده شده است.
}بررسی وابستگی
عبارت `if ( ! function_exists( 'la24_get_option' ) )` تضمین میکند که اگر LA24Core فعال نباشد، افزونه شما بدون خطا از بارگذاری صرفنظر میکند.
- تابع `la24_get_option` در فایل `includes/helpers/la24-core-functions.php` تعریف شده و به محض بارگذاری LA24Core در دسترس است.
- همیشه از اکشن `plugins_loaded` استفاده کنید (نه `init`) تا مطمئن شوید همه افزونهها قبل از اجرای بررسی بارگذاری شدهاند.

جدول مرجع سریع
| هدف | Hook / تابع | نوع |
|---|---|---|
| اضافه کردن آیتم منوی کناری | `la24_dashboard_menu_items` | Action |
| ثبت صفحه CRM | `la24_endpoints` | Filter |
| اضافه کردن مجوز | `la24_capability` | Filter |
| گروهبندی مجوزها در رابط | `la24_groups_permission` | Filter |
| اضافه کردن تب تاریخچه پروفایل | `la24_history_user_profile` | Filter |
| اضافه کردن دکمه عملیات پروفایل | `la24_render_profile_action_btn` | Filter |
| اضافه کردن ویجت داشبورد | `la24_widgets` | Filter |
| اضافه کردن پنل تنظیمات | `la24_register_setting` | Filter |
| بررسی دسترسی کاربر | `la24_user_can( $user_id, $cap )` | تابع |
| دریافت URL صفحه | `la24_get_permalink_panel( $slug )` | تابع |
| خواندن تنظیمات پلاگین | `la24_get_option( $key, $group )` | تابع |
| ذخیره تنظیمات پلاگین | `la24_update_option( $key, $val, $group )` | تابع |